在PHP中递归地更改数组的值

13

我正在尝试递归地更改数组的值,但是我在stackoverflow上看到的所有示例都不符合我的要求。

基本上,我想将布尔值转换为字符串。

foreach($this->data as $key=>$value)
{
    if (is_bool($value))
    {
        $this->data[$key] = var_export($value, true);
    }       
}

这仅适用于数组的第一层级。我也尝试使用array_walk_recursive更改值,但没有成功。

提前感谢。

1个回答

30

array_walk_recursive() 能够轻松地完成这个任务。

array_walk_recursive(
    $myArray,
    function (&$value) {
        if (is_bool($value)) {
            $value = 'I AM A BOOLEAN';
        }
    }
);

演示


2
&(通过引用)正是我所需要的,谢谢! - Skoempie
1
这就是我正在寻找的。 - FosAvance
1
感谢您的回答,是否有任何方法可以根据同一数组中另一个关键元素的值来更改值? - rahul singh
@rahul 不要使用这个函数。最多,你可以找到已访问的叶节点(值)及其键(如果将其传递到回调函数中),如果需要在递归迭代时访问更大部分的数据,则需要设计自己的自定义函数。 - mickmackusa
@rahulsingh 是的,你可以这样做:array_walk_recursive($myArray, function($value, $key){...}); - Adam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接