PHP 操作多维数组值

标签 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"
    )
)

我如何应用一个函数来仅用 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);
    }    
}

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

最佳答案

使用 array_walk_recursive :

如果您有 PHP >= 5.3.0(对于 anonymous functions):

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

否则类似:

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

关于PHP 操作多维数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4577412/

相关文章:

php - PHP 关联数组中的项目不能以数字方式访问(即通过索引)吗?

ios - 产生错误的空数组

python - 创建一个以维数、均值和方差为参数的 numpy 数组?

php - 从未初始化的类型化属性中查找类型

php - 使用 PHP 连接和测试 Memcached

javascript - 更改仅适用于表中的第一行

PHP 按自定义顺序对三个字母字符进行排序

javascript - 每隔一段时间将项目从 JavaScript 数组中逐一输出到 HTML 文本

php - 如何在 PHP 7.1.1 中对浮点值进行 json_encode?

PHP if语句题(&运算符)