我有一个来自数据库的数组结果集,如下所示:
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/