Saya ingin menggabungkan dua tatasusunan berdasarkan nilai lajur biasa. Berikut ialah 2 tatasusunan saya:
$array1 = [
[
"total_process_per_category" => "6",
"category_id" => "1"
],
[
"total_process_per_category" => "2",
"category_id" => "2"
]
];
$array2 = [
[
"total_pinned_per_category" => "16",
"category_id" => "1"
],
[
"total_pinned_per_category" => "4",
"category_id" => "2"
]
];
Saya mahu menggabungkan tatasusunan ini untuk mendapatkan:
array (
0 =>
array (
'total_process_per_category' => '6',
'total_pinned_per_category' => '16',
'category_id' => '1',
),
1 =>
array (
'total_process_per_category' => '2',
'total_pinned_per_category' => '4',
'category_id' => '2',
),
)
Seperti yang anda lihat, kedua-dua tatasusunan mempunyai kunci yang sama ['id_kategori'] dan nilai yang sama.
Saya ingin mendapatkan hasil di mana ['total_process_per_category'] dan ['total_pinned_per_category'] diletakkan bersama pada tatasusunan yang sama berdasarkan nilai ['category_id'] mereka.
Saya mendapat ini menggunakan nested foreach tetapi ia kelihatan hodoh. Tolong beritahu saya cara yang lebih baik.
2 jawapan
Ini boleh dilakukan tanpa "foreach bersarang hodoh". Cantumkan dua tatasusunan sebelum lelaran, kumpulkan mengikut nilai category_id. Selepas gelung tamat, gunakan array_values() untuk mengosongkan kunci peringkat pertama sementara.
Kod: (Demo) (array_reduce() versi)
$result = [];
foreach (array_merge($array1, $array2) as $row) {
$result[$row['category_id']] = ($result[$row['category_id']] ?? []) + $row;
}
var_export(array_values($result));
Keluaran:
array (
0 =>
array (
'total_process_per_category' => '6',
'category_id' => '1',
'total_pinned_per_category' => '16',
),
1 =>
array (
'total_process_per_category' => '2',
'category_id' => '2',
'total_pinned_per_category' => '4',
),
) Boleh cuba array_reduce:
$someVariable = 'someValue';
$result = array_reduce(array_merge($array1, $array2), function ($carry, $item) use ($someVariable) {
if (isset($carry[$item['category_id']])) {
$carry[$item['category_id']] = array_merge($carry[$item['category_id']], $item);
} else {
$carry[$item['category_id']] = $item;
}
return $carry;
}, array());
var_dump($result);
Alat panas Tag
Hot Questions
Hot Tools
vc9-vc14 (32+64 bit) koleksi perpustakaan masa jalan (pautan di bawah)
Muat turun koleksi perpustakaan runtime yang diperlukan untuk pemasangan phpStudy
VC9 32-bit
VC9 32-bit phpstudy pustaka masa jalan persekitaran pemasangan bersepadu
Kotak alat pengaturcara PHP versi penuh
Programmer Toolbox v1.0 PHP Persekitaran Bersepadu
VC11 32-bit
VC11 32-bit phpstudy pustaka masa jalan persekitaran pemasangan bersepadu
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Topik panas





