PHP多维数组值替换为另一个值

PHP多维数组值替换为另一个值,php,multidimensional-array,Php,Multidimensional Array,我有一个数组如下 Array ( [0] => Array ( [0] => Pedigree Dry [1] => N/A [2] => N/A [3] => N/A ) [1] => Array ( [0] => Professional Range

我有一个数组如下

Array
(
    [0] => Array
        (
            [0] => Pedigree Dry
            [1] => N/A
            [2] => N/A
            [3] => N/A
        )

    [1] => Array
        (
            [0] => Professional Range
            [1] => N/A
            [2] => N/A
            [3] => N/A
        )

    [2] => Array
        (
            [0] => Pedigree Wet
            [1] => N/A
            [2] => N/A
            [3] => N/A
        )

    [3] => Array
        (
            [0] => PMM
            [1] => N/A
            [2] => N/A
            [3] => N/A
        )

    [4] => Array
        (
            [0] => Chappi
            [1] => N/A
            [2] => N/A
            [3] => N/A
        )

    [5] => Array
        (
            [0] => Care & Treat
            [1] => N/A
            [2] => N/A
            [3] => N/A
        )

    [6] => Array
        (
            [0] => Sheba
            [1] => N/A
            [2] => N/A
            [3] => N/A
        )

    [7] => Array
        (
            [0] => Whiskas Dry
            [1] => N/A
            [2] => N/A
            [3] => N/A
        )

    [8] => Array
        (
            [0] => Whiskas Wet
            [1] => N/A
            [2] => N/A
            [3] => N/A
        )

)
上面的代码是多维数组。但是所有数组元素(索引除外)都是N/A。我想用0替换所有N/A。
如何将所有N/A替换为0?

我相信有比这更好的答案。。但您可以始终使用嵌套的foreach方法

//loop through each Array (first level)
foreach ($arrays as $array) 
{
     //create two variables for each sub array so you have access to keys and values
     foreach ($array as $key=>$value) 
     {
         if ($value = "N/A")
         {
              $value = 0;
         }
     }
}
这将遍历所有内部数组,并将所有“N/A”替换为零,并将它们添加到新的结果数组中

工作

尝试以下方法:

function replaceNa($var) {
    if ($var == 'N/A' ) {
        return 0;
    } else {
        return $var;
    }
}

$array = array(
    array('Pedigre dry', 'N/A', 'N/A', 'N/A'),
    array('Professional Range', 'N/A', 'N/A', 'N/A'),
    array('Pedigree Wet', 'N/A', 'N/A', 'N/A'),
    array('PMM', 'N/A', 'N/A', 'N/A'),
);


foreach ($array as $key => $item) {

    $array[$key] = array_map('replaceNa', $item);
}

var_dump ($array);

对于这种情况,因为几乎所有的值都是
N/A
,我可能不会在数组中更改它们,而是在输出时更改它们?0:$val假设一个循环。@Michael我知道上面的想法。我想把上面的值传递给另一个函数。在这种情况下,我会做什么?如果你真的需要修改它,那么阿里下面的答案是好的。我知道,不需要建议。你可能希望通过引用传递
$array
$value
foreach($array as$key=>&$value)
您需要在
foreach
中使用数组引用来在迭代循环时实际修改循环(),这不会更改元素的值。
$array[$key]=0
foreach($array as&$value)
然后
$value=0如何替换数组中的字符串?str_replace替换字符串中的字符串。基本语法。无论如何,我并没有否决。@lolka_bolka str_replace可以替换所有数组值,因为它在所有数组值上循环。阅读文档。第三个参数是
mixed
,这意味着它可以是一个数组。我还包括一个工作演示。
function replaceNa($var) {
    if ($var == 'N/A' ) {
        return 0;
    } else {
        return $var;
    }
}

$array = array(
    array('Pedigre dry', 'N/A', 'N/A', 'N/A'),
    array('Professional Range', 'N/A', 'N/A', 'N/A'),
    array('Pedigree Wet', 'N/A', 'N/A', 'N/A'),
    array('PMM', 'N/A', 'N/A', 'N/A'),
);


foreach ($array as $key => $item) {

    $array[$key] = array_map('replaceNa', $item);
}

var_dump ($array);