[英]How do I replace all occurances of a value in a multidimensional php array?
在嵌套/多维php数组中,如何将出现的值“ FOO”替换为“ BAR”? 就我而言,我试图用字符串“ NAN”替换NAN(而不是数字)值,但是应该应用相同的原理。 我不完整的示例代码:
function replaceNan($data)
{
// probably some recursion here?
}
$data = [
'foo' => NAN,
'bar' => [
'one' => 1,
'nan' => NAN
],
'baz' => 'BAZ'
];
$data = replaceNan($data);
var_dump($data);
除非有一个核心的php函数会有所帮助,否则我认为将涉及递归,但是我现在无法弄清楚。 任何帮助表示赞赏。
编辑:为了清楚起见,在我的示例中,我希望修改$data
使其看起来像:
[
'foo' => "NAN",
'bar' => [
'one' => 1,
'nan' => "NAN"
],
'baz' => 'BAZ'
]
怎么样
function replace_nan(&$ary) {
foreach($ary as &$item) {
if(is_double($item) && is_nan($item))
$item = "NAN";
else if(is_array($item))
replace_nan($item);
}
}
数组通过引用传递并就地修改:
$data = [...];
replace_nan($data);
var_dump($data);
这对我有用:
function replace_nan($a){
foreach($a as $key1 => $array1){
if(!is_array($array1)){
if(!is_string($array1) && is_nan($array1)){
$a[$key1] = "NAN";
}
}else{
$a[$key1] = replace_nan($array1);
}
}
return $a;
}
var_dump(replace_nan($data));
产量:
array (size=3)
'foo' => string 'NAN' (length=3)
'bar' =>
array (size=2)
'one' => int 1
'nan' => string 'NAN' (length=3)
'baz' => string 'BAZ' (length=3)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.