如何替换多维 php 数组中所有出现的值? [英] How do I replace all occurances of a value in a multidimensional php array?

查看:40
本文介绍了如何替换多维 php 数组中所有出现的值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在嵌套/多维 php 数组中用BAR"替换任何出现的值FOO"?就我而言,我试图用字符串NAN"替换 NAN(不是数字)值,但应该适用相同的原则.我不完整的示例代码:

函数 replaceNan($data){//这里可能有一些递归?}$数据 = ['富' =>南,'酒吧' =>['一个' =>1、'南' =>南],'巴兹' =>'巴兹'];$data = replaceNan($data);var_dump($data);

除非有一个核心 php 函数可以提供帮助,否则我认为将涉及递归,但我现在无法弄清楚.任何帮助表示赞赏.

为了清楚起见,在我的示例中,我希望 $data 被修改为如下所示:

<预><代码>['富' =>"南",'酒吧' =>['一个' =>1、'南' =>南"],'巴兹' =>'巴兹']

解决方案

怎么样

function replace_nan(&$ary) {foreach($ary as &$ite​​m) {if(is_double($item) && is_nan($item))$item = "南";否则 if(is_array($item))replace_nan($item);}}

数组通过引用传递并就地修改:

$data = [...];replace_nan($data);var_dump($data);

How would I replace any occurrence of value "FOO" with "BAR" in a nested/multidimensional php array? In my case, I'm trying to replace NAN (not a number) values with a string "NAN", but the same principles should apply. My incomplete example code:

function replaceNan($data)
{
    // probably some recursion here?
}

$data = [
    'foo' => NAN,
    'bar' => [
        'one' => 1,
        'nan' => NAN
    ],
    'baz' => 'BAZ'    
];

$data = replaceNan($data);
var_dump($data);

Unless there's a core php function that will help, I assume recursion will be involved, but I just can't figure it out right now. Any help appreciated.

Edit: Just to be clear, in my example, I would want $data to be modified so it looks like:

[
    'foo' => "NAN",
    'bar' => [
        'one' => 1,
        'nan' => "NAN"
    ],
    'baz' => 'BAZ'    
]

解决方案

How about

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);
    }
}

Array is passed by reference and modified in place:

$data = [...];
replace_nan($data);
var_dump($data);

这篇关于如何替换多维 php 数组中所有出现的值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆