3 回答

TA貢獻1830條經驗 獲得超3個贊
array_merge使用 等的替代方法array_combine...只是兩個簡單的 foreach 循環并將值設置到一個新數組 ( $new_arr) 中。
$new_arr = [];
foreach($arr as $inner_arr) {
foreach($inner_arr as $key=>$value) {
$new_arr[$key] = $value;
}
}
更新 我不清楚 OP 想要什么,但我希望現在更清楚了:
試試這個:( 基本上將值添加到array[name of ZipName][{current key for the inner array}]
$arr = [
[
'ZipName' => 'data.zip',
'Age' => '45'
],
[
'ZipName' => 'data.zip',
'Name' => 'John'
],
[
'ZipName' => 'data2.zip',
'Age' => '27'
],
[
'ZipName' => 'data1.zip',
'Name' => 'Abram'
],
[
'ZipName' => 'data1.zip'
],
[
'ZipName' => 'data2.zip',
'City' => 'London'
],
[
'ZipName' => 'data2.zip',
'Name' => 'Inna'
],
[
'ZipName' => 'data1.zip',
'City' => 'London'
]
];
$new_arr = [];
foreach($arr as $key => $inner_arr) {
foreach($inner_arr as $ik => $item) {
$new_arr[$inner_arr['ZipName']][$ik] = $item;
}
}
輸出:
Array
(
[data.zip] => Array
(
[ZipName] => data.zip
[Age] => 45
[Name] => John
)
[data2.zip] => Array
(
[ZipName] => data2.zip
[Age] => 27
[City] => London
[Name] => Inna
)
[data1.zip] => Array
(
[ZipName] => data1.zip
[Name] => Abram
[City] => London
)
)
做的時候:
$new_arr = array_values($new_arr);
關鍵只是做一個數字索引(如果重要的話)
Array
(
[0] => Array
(
[ZipName] => data.zip
[Age] => 45
[Name] => John
)
[1] => Array
(
[ZipName] => data2.zip
[Age] => 27
[City] => London
[Name] => Inna
)
[2] => Array
(
[ZipName] => data1.zip
[Name] => Abram
[City] => London
)
)

TA貢獻1725條經驗 獲得超8個贊
您需要的是按索引處的唯一值進行分組['ZipName']
,然后分別合并這些組。這可以通過.array_reduce
例子:
<?php
declare(strict_types=1);
$input = [
? ? [
? ? ? ? 'ZipName' => 'data_1.zip',
? ? ? ? 'Age'? ? ?=> 45,
? ? ], [
? ? ? ? 'ZipName' => 'data_1.zip',
? ? ? ? 'Name'? ? => 'John',
? ? ], [
? ? ? ? 'ZipName' => 'data_1.zip',
? ? ], [
? ? ? ? 'ZipName' => 'data_1.zip',
? ? ? ? 'City'? ? => 'Leicester',
? ? ],
? ? [
? ? ? ? 'ZipName' => 'data_2.zip',
? ? ? ? 'Age'? ? ?=> 45,
? ? ], [
? ? ? ? 'ZipName' => 'data_2.zip',
? ? ? ? 'Name'? ? => 'John',
? ? ], [
? ? ? ? 'ZipName' => 'data_2.zip',
? ? ], [
? ? ? ? 'ZipName' => 'data_2.zip',
? ? ? ? 'City'? ? => 'Leicester',
? ? ],
];
$output = array_values(array_reduce($input, static function (array $acc, array $item): array {
? ? $acc[$item['ZipName']] = array_merge($acc[$item['ZipName']] ?? [], $item);
? ? return $acc;
}, []));
print_r($output);

TA貢獻2036條經驗 獲得超8個贊
我想你要組合不同的數組,所以請使用數組合并。
$array0 = Array
(
"ZipName" => data.zip,
"Age" => 45
);
$array1 = Array
(
"ZipName" => data.zip,
"Name" => John
);
$array2 = Array
(
"ZipName" => data.zip
);
$array3 = Array
(
"ZipName" => data.zip,
"City" => Leicester
);
print_r(array_merge($array0, $array1, $array2, $array3));
輸出:
Array ( [ZipName] => datazip
[Age] => 45
[Name] => John
[City] => Leicester )
- 3 回答
- 0 關注
- 154 瀏覽
添加回答
舉報