通过引用更改多维数组中的值(在PHP中)?
以下PHP函数通过匹配多维数组中的节点的键来查找该节点:通过引用更改多维数组中的值(在PHP中)?,php,arrays,multidimensional-array,reference,Php,Arrays,Multidimensional Array,Reference,以下PHP函数通过匹配多维数组中的节点的键来查找该节点: <?php function & findByKey($array, $key) { foreach ($array as $k => $v) { if(strcasecmp($k, $key) === 0) { return $array[$k]; } elseif(is_array($v) && ($find = findByKey($
<?php
function & findByKey($array, $key) {
foreach ($array as $k => $v) {
if(strcasecmp($k, $key) === 0) {
return $array[$k];
} elseif(is_array($v) && ($find = findByKey($array[$k], $key))) {
return $find;
}
}
return null;
}
$array = [
'key1' => [
'key2' => [
'key3' => [
'key5' => 1
],
'key4' => '2'
]
]
];
$result = findByKey($array, 'key3');
我怎样才能做到这一点?您需要做两件事: 1) 指定
$array
参数作为参考:
function & findByKey(&$array, $key) {
2) 使用和通过引用分配变量$result
:
$result = &findByKey($array, 'key3');
由于是递归调用函数,因此还需要通过引用分配$find
总共:
function & findByKey(&$array, $key) {
foreach ($array as $k => $v) {
if(strcasecmp($k, $key) === 0) {
return $array[$k];
} elseif(is_array($v) && ($find = &findByKey($array[$k], $key))) {
return $find;
}
}
return null;
}
$result = &findByKey($array, 'key3');
$result = 'changed';
print_r($array);
是否尝试使用数组\列?这应该是一个开始
function & findByKey(&$array, $key) {
foreach ($array as $k => $v) {
if(strcasecmp($k, $key) === 0) {
return $array[$k];
} elseif(is_array($v) && ($find = &findByKey($array[$k], $key))) {
return $find;
}
}
return null;
}
$result = &findByKey($array, 'key3');
$result = 'changed';
print_r($array);