通过引用更改多维数组中的值(在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函数通过匹配多维数组中的节点的键来查找该节点:

<?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);