Php 如何更改当前数组键的值
我试图更改递归数组中嵌套数组的数量/深度未知的所有值。我想这只是我被语法绊倒了 基本上,我需要再次输出带有所有新值的$orgarrayPhp 如何更改当前数组键的值,php,arrays,Php,Arrays,我试图更改递归数组中嵌套数组的数量/深度未知的所有值。我想这只是我被语法绊倒了 基本上,我需要再次输出带有所有新值的$orgarray $orgarray = array( '101' => 'some-value', '102' => 'some-value', '103' => 'some-value', '104' => array( '201' => 'some-value', '202' =&
$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>';
现在差不多了,但我仍然不明白为什么最初对函数的调用不起作用(recursearray($orgarray,$modarray);),而尝试向嵌套数组添加键的两个方法也不起作用。我认为这会起作用:
注意foreach($key=>数组和$value){
您好!@Jack您看不到他提供的代码片段吗?您想更改什么?您希望得到什么结果?@Austinbrunkhost-什么代码片段?OP只提供了一个数组的打印输出。@felix,基本上我有一个CMS的API函数,它在一个方便的数组中输出文档ID,该数组的结构与站点结构匹配是的,但它返回的都是id。我需要查找每个id,获取有关它的一些信息[doc name,uri等],并用这些信息更新组织数组。您只需要
$array[$key]=$new\u value;
。
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);
<?php
function recursearray(&$array){
foreach($array as $key => &$value){
if (is_array($value)){
recursearray($value);
}else{
$value = 'other-value';
};
};
};
?>