在收集统计数据时,我需要处理索引数量不同的数组。
我必须添加到$array[$ind1][$ind2]
和$array[$ind1][$ind2][$ind3][$ind4]
中。
是否可以创建类似arrayAdd($number,$arrayOfIndices)
的函数
在第一种情况下,$arrayOfIndices
是[$ind,$ind2]
第二种情况[$ind1,$ind2,$ind3,$ind4]
?
我解决了将其全部写出的问题,具体取决于$arrayOfIndices
的数量。
但是希望以一种更加优雅和通用的方式。
答案 0 :(得分:1)
<?php
function array_add(&$array, array $indices, $value) {
count($indices)==1
? $array[$indices[0]] = $value
: array_add($array[array_shift($indices)], $indices, $value);
}
$data = ['pig'=>'man'];
$indices = ['foo', 'bar', 'baz'];
array_add($data, $indices, 'bat');
var_export($data);
输出:
array (
'pig' => 'man',
'foo' =>
array (
'bar' =>
array (
'baz' => 'bat',
),
),
)