替换二维关联数组中的值

时间:2017-10-10 09:40:44

标签: php replace foreach associative-array

$ update是一个二维关联数组。 var_dump的一部分是:

array(101) { 
[0]=> array(27) { ["code"]=> string(4) "2014" ["na1"]=> string(4) "6010" and many more fields following }
[1]=> array(27) { ["code"]=> string(4) "2015" ["na1"]=> string(4) "6010" and many more fields following }
and many more subarrays following of course . . .

需要用名称替换代码值并创建:

    foreach($update as $key=>$subarray){;
        foreach ($subarray as $subkey=>$val) {
            echo $subkey.$val."<br>";//Just for checking
            if ($subkey=='code' && $val==2014) 
            {
                $val="Name1";
            }
            elseif ($key=='code' && $val==2015) 
            {
                $val="Name2";
            }
        }
    }
var_dump($update);

echo $子键和$ val完美地给出了正确的值,但是de If语句似乎永远不会是真的(或者以某种方式再次被取消),因为var_dump再次导致原始值

一些Stackoverflow研究甚至展示了只有一个foreach循环的结构,更优雅,但似乎没有达到第二个数组级别。

有更好的方法吗?解决这个问题的解决方案?

3 个答案:

答案 0 :(得分:0)

您没有更新源数组。

foreach($update as $key=>$subarray){
    foreach ($subarray as $subkey=>$val) {
        echo $subkey.$val."<br>";//Just for checking
        if ($subkey=='code' && $val==2014) 
        {
            //$val="Name1";
            $update[$key][$subkey] = "Name1" ;
        }
        elseif ($key=='code' && $val==2015) 
        {
            //$val="Name2";
            $update[$key][$subkey] = "Name2" ;
        }
    }
}

答案 1 :(得分:0)

您可以通过索引访问所需的字段。

示例:

$i = 0;
$j = 0;
foreach($update as $key=>$subarray){;
        foreach ($subarray as $subkey=>$val) {
            echo $subkey.$val."<br>";//Just for checking
            if ($subkey=='code' && $val==2014) 
            {
                $update[$i][$j] = "Name1";
            }
            elseif ($key=='code' && $val==2015) 
            {
                $update[$i][$j] = "Name2";
            }
            $j++
        }
        $j = 0;
        $i++;
    }
var_dump($update);

答案 2 :(得分:0)

$newArr = array(); 
foreach($update as $key=>$subarray){
        $subNewArr = array();
        foreach ($subarray as $item) {
            if ($item['code']==2014) 
            {
                $item['code']="Name1";
            }
            elseif ($item['code']==2015) 
            {
                $item['code']="Name2";
            }
            array_push($subNewArr, $item);

        }
        array_push($newArr, $subNewArr);
    }
var_dump($update);

如果没有其他检查