我正在尝试更改递归数组中的所有值,这些数组将具有未知数量/深度的嵌套数组。我认为这只是我绊倒的语法。
基本上我需要再次使用所有新值输出$ orgarray。
$orgarray = array(
'101' => 'some-value',
'102' => 'some-value',
'103' => 'some-value',
'104' => array(
'201' => 'some-value',
'202' => 'some-value',
'203' => array(
'301' => 'some-value',
'302' => array(
'401' => 'some-value',
'402' => 'some-value',
'501' => array(
'502' => 'some-value',
'503' => 'some-value',
'504' => 'some-value',
'505' => 'some-value',
'506' => 'some-vaslue'
),
),
),
),
'105' => 'some-value',
'106' => 'some-value',
'107' => 'some-value'
);
function recursearray($array, &$modarray){
foreach($array as $key => $value){
if (is_array($value)){
recursearray($value);
// append keys to this nested array
???
}else{
// change current key's value
???
}
}
}
recursearray($orgarray, $modarray);
echo '<pre>';
print_r($modarray);
echo '</pre>';
我在这里做错了什么?
我无法更改当前密钥的值
这将不会输出任何数组
修改的 好的 - 我改变了调用函数的方式:
function recursearray($array, &$modarray){
if(!isset($modarray)) {
$modarray = array();
}
foreach($array as $key => $value){
if (is_array($value)){
recursearray($value, &$modarray);
// append keys to this nested array
// neither of these work
array_push($value['newkey'] = 'new_value');
$value['newkey'] = 'new_value';
}else{
// change current key's value
$array[$key] = 'value';
}
}
return $array;
}
$modarray = recursearray($orgarray, $modarray);
现在它几乎就在那里,但我仍然不明白为什么对该函数的原始调用不起作用(recursearray($ orgarray,$ modarray);)以及尝试向嵌套数组添加键的2个方法也不行。
答案 0 :(得分:1)
我认为这样可行:
<?php
function recursearray(&$array){
foreach($array as $key => &$value){
if (is_array($value)){
recursearray($value);
}else{
$value = 'other-value';
};
};
};
?>
注意foreach($array as $key => &$value){
问候!