我有一个像这样的N级Multidimentional数组:
Array
(
[0] => Array
(
[id] => 7_cat
[text] => cat1
[children] => Array
(
[0] => Array
(
[id] => 9_cat
[text] => cat3
)
)
)
[1] => Array
(
[id] => 8_cat
[text] => cat2
)
[2] => Array
(
[id] => 13_cat
[text] => cat4
)
)
我有一个像这样的索引数组:
Array
(
[0] => 0
[1] => children
[2] => 0
[3] => id
)
所以我想在这些深度中在第一个数组中添加一个新元素。在这个例子中,我想在$ firstarray [0] ['children'] [0] ['id']中添加一个新元素。 我该怎么办?
非常感谢
答案 0 :(得分:0)
喜欢这个
此处 $ oldArray 是您的第一个数组
$indexArray=Array
(
[0] => 0
[1] => children
[2] => 0
[3] => id
);
$indexForold=[];
foreach($indexArray as $indx){
$indexForold=$indexForold[$indx];
}
$oldArray[$indexForold]=$myVal;
答案 1 :(得分:0)
解决方法是,在遍历数组时使用reference来保持对当前数组元素的引用。
$nArr
是您的n维数组,$indexArr
是您的索引数组。<YOUR_VALUE>
替换为您想要的值。所以你的代码应该是这样的:
$arrLength = count($indexArr);
$tmpArr = null;
$i = 0;
for(; $i < $arrLength - 1; ++$i){
if($tmpArr == null){
$tmpArr = &$nArr[$indexArr[$i]];
}else{
$tmpArr = &$tmpArr[$indexArr[$i]];
}
}
$tmpArr[$indexArr[$i]] = <YOUR_VALUE>;
// now display the n-dimensional array
echo "<pre>";
print_r($nArr);
echo "</pre>";
答案 2 :(得分:0)
你可以试试这样的......
$array = [
[
'id' => '7_cat',
'text' => 'cat1',
'children' => [
[
'id' => '9_cat',
'text' => 'cat3'
]
]
],
[
'id' => '8_cat',
'text' => 'cat2'
],
[
'id' => '13_cat',
'text' => 'cat4'
]
];
$multIndexValue = function (array $indexList, array $searchArray) {
$result = $searchArray;
foreach ($indexList as $index) {
$result = $result[$index];
}
return $result;
};
$search = [0, 'children', 0, 'id'];
$result = $multIndexValue($search, $array); // string(5) "9_cat"