PHP操纵多维数组值

Jok*_*ker 5 php arrays

我将结果集设置为数据库中的数组,如下所示:

array (
    0 => array (
        "a" => "something"
        "b" => "something"
        "c" => "something"
    )
    1 => array (
        "a" => "something"
        "b" => "something"
        "c" => "something"
    )
    2 => array (
        "a" => "something"
        "b" => "something"
        "c" => "something"
    )
)
Run Code Online (Sandbox Code Playgroud)

我如何应用一个函数来仅在数组键上用b替换数组的值?通常情况下,我只是使用foreach循环重建一个新数组,如果数组键是b,则应用该函数,但我不确定它是否是最好的方法.我试过看看很多数组函数,看起来像array_walk_recursive是我可能会使用的东西,但我没有运气让它做我想做的事情.如果我没有足够好地描述它,基本上我希望能够像下面的代码那样做:

$arr = array();
foreach ($result as $key => $value)
{
    foreach ($value as $key2 => $value2)
    {
        $arr[$key][$key2] = ($key2 == 'b' ? $this->_my_method($value2) : $value2);
    }    
}
Run Code Online (Sandbox Code Playgroud)

我应该坚持下去,还是有更好的方法?

thi*_*dot 5

使用array_walk_recursive

如果您有 PHP >= 5.3.0(对于匿名函数):

array_walk_recursive($result, function (&$item, $key) {
    if ($key == 'b') {
        $item = 'the key is b!';
    }
});
Run Code Online (Sandbox Code Playgroud)

否则像:

function _my_method(&$item, $key) {
    if ($key == 'b') {
        $item = 'the key is b!';
    }
}
array_walk_recursive($result, '_my_method');
Run Code Online (Sandbox Code Playgroud)