您好。我有以下问题:
我有一个数组。。我想改变它的结构。。如果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作为第三级。