我如何更换任何值的出现" FOO"用" BAR"在嵌套/多维php数组?在我的例子中,我试图用字符串" 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'
]
答案 0 :(得分:1)
怎么样
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);
答案 1 :(得分:0)
这对我有用:
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)