php多维数组.改变结构



您好。我有以下问题:

我有一个数组。。我想改变它的结构。。如果object_id不相同,我不想将Array放在父Array中。如何做到这一点?object_id为917的数组应高于索引为1和2的数组。

例如,在索引1处,是否可以使用不同object_id的数组数组?

object_type它就像唯一索引。

初始阵列:

$arr = [
[
'initiator_id' => 259, 'object_type' => 1, 'object_id' => 905,
'date'         => '2021-11-16 06:24:16',
],
[
'initiator_id' => 259, 'object_type' => 1, 'object_id' => 917,
'date'         => '2021-11-16 06:24:16',
],

[
'initiator_id' => 259, 'object_type' => 1, 'object_id' => 905,
'date'         => '2021-11-16 04:54:54',
],
[
'initiator_id' => 259, 'object_type' => 1, 'object_id' => 905,
'date'         => '2021-11-16 04:53:58',
],
[
'initiator_id' => 219, 'object_type' => 2, 'object_id' => 915,
'date'         => '2021-11-16 04:53:58',
],
];

阵列:

Array
(
[object_type] => Array
(
[1] => Array
(
[0] => Array
(
[initiator_id] => 259
[object_id] => 905
[date] => 2021-11-16 06:24:16
[activity] => added 
)
[1] => Array
(
[initiator_id] => 259
[object_id] => 917 
[date] => 2021-11-16 06:24:16
[activity] => deleted
)
[2] => Array
(
[initiator_id] => 259
[object_id] => 905
[date] => 2021-11-16 04:54:54
[activity] => reopen
)
[3] => Array
(
[initiator_id] => 259
[object_id] => 905
[date] => 2021-11-16 04:53:58
[activity] => insert
)
)
[2] => Array
(
[0] => Array
(
[initiator_id] => 219
[object_id] => 915
[date] => 2021-11-16 04:53:58
[activity] => change
)
)
)
)

php代码:

foreach($arr as $record) {
foreach($record as $k => $v) {
if($k == 'object_type') {
$newArr['object_type'][$v][] = [
'initiator_id' => $record['initiator_id'],
'object_id' => $record['object_id'],
'date' => $record['date'],
];
}
}
}

预期结果:

[object_type] => Array
(
[1] => Array
(

[905] => Array
(
[1] => Array
(
[initiator_id] => 219
[object_id] => 905
[date] => 2021-11-16 04:53:58
[activity] => change

)
[2] => Array
(
[initiator_id] => 219
[object_id] => 905
[date] => 2021-11-16 04:53:58
[activity] => change
)
)


[917] => Array
(
[1] => Array
(
[initiator_id] => 219
[object_id] => 917
[date] => 2021-11-16 04:53:58
[activity] => change
)
[2] => Array
(
[initiator_id] => 219
[object_id] => 917
[date] => 2021-11-16 04:53:58
[activity] => change

)
)


)
[2] => Array
(
[925] => Array
(
[1] => Array
(
[initiator_id] => 925
[object_id] => 917
[date] => 2021-11-16 04:53:58
[activity] => change
)

)
)
)

只需对$arr进行迭代,并通过将每个$arr项放在其所需位置来构建一个新数组:

$result = []; 
foreach($arr as $item) { 
$result['object_type']
[$item['object_type']]
[$item['object_id']] []= $item; 
} 
print_r($result);

CCD_ 1表示";将右手边加到左手边上的阵列上";。

编辑添加object_id作为第三级。

最新更新