我有
[
[
{
"radius": 0,
"0004718100": 17.42
},
{
"radius": 1,
"0004718100": 21.15
},
],
[
{
"radius": 0,
"0014084415": 21.39
},
{
"radius": 1,
"0014084415": 22.74
},
]
]
我需要
[
[
{
"radius": 0,
"0004718100": 17.42,
"0014084415": 21.39
},
{
"radius": 1,
"0004718100": 21.15,
"0014084415": 22.74
},
]
]
我的代碼:
$arr = [];
for ($i = 0; $i < count($data); $i ) {
$arr = array_merge($arr, $data[$i]);
}
這會將它們連續合并到一個陣列中,而不是將它們添加到相同的物件中
uj5u.com熱心網友回復:
這個怎么樣 ?我使用半徑鍵作為分組屬性進行了合并。
<?php
// example code
$a = [
0 => [
0 => [
'radius' => 0,
'0004718100' => 17.42,
],
1 => [
'radius' => 1,
'0004718100' => 21.15,
],
],
1 => [
0 => [
'radius' => 0,
'0014084415' => 21.39,
],
1 => [
'radius' => 1,
'0014084415' => 22.74,
],
],
];
$arr= [];
for ($i = 0; $i < count($a); $i ) {
for ($j = 0; $j < count($a[$i]); $j ) {
$groupingProperty = $a[$i][$j]['radius'];
if (!isset($arr[$groupingProperty])) $arr[$groupingProperty] = [];
$arr[$groupingProperty] = array_merge($arr[$groupingProperty], $a[$i][$j]);
}
}
print_r($arr);
uj5u.com熱心網友回復:
您在這里要做的是一個新陣列,其中資料按半徑分組。因此,您將需要遍歷資料的內部元素并檢查它們的半徑是否已經存在于您將回傳的陣列中。如果不是 => 在陣列中創建一個新陣列,您將回傳并使用半徑作為索引。如果半徑已經存在 => 將值添加到相應的索引(即半徑)
uj5u.com熱心網友回復:
$arr = [
[
[ 'radius' => 0, '0004718100' => 17.42, ],
[ 'radius' => 1, '0004718100' => 21.15, ]
],
[
[ 'radius' => 0, '0014084415' => 21.39, ],
[ 'radius' => 1, '0014084415' => 22.74, ]
]
];
function group_by_radius(array $carry, array $item): array {
$carry[$item['radius']][] = $item;
return $carry;
}
$flattened = array_reduce($arr, 'array_merge', []);
$grouped = array_reduce($flattened, 'group_by_radius', []);
$result = array_map(fn($item) => array_merge(...$item), $grouped);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/488763.html
上一篇:為什么它是未定義的輸出?
