PHP替换数组中的值

时间:2016-07-02 12:25:35

标签: php arrays replace

我有这个包含城市代码的数组:

$aryCityCodes = array ("LND", "NY");

另一个包含用户数据的数组:

$ary = array (
    array("John", "LND","London"),
    array("Mary", "NY","New York"),
    array("Larry", "AMS","Amsterdam")
); 

我需要最终得到像$ ary这样的数组,但是如果$ ary中的城市代码包含在$ aryCityCodes中,$ ary中的城市名称必须跟随&#34; prime city&#34; < / p>

到目前为止,这就是我所做的:

   if($aryCityCodes)
   {
    if (count($ary) > 0)
    {
        foreach($ary as $item) 
        {

            $bAux= false;
            foreach ($item as $key => $value) 
            { 
                foreach ($aryCityCodes as $aCityCode)
                {

                    if ($aCityCode == $value)
                    {
                        $bAux = true; 
                    }
                    if($bAux)
                    {
                            $value = $value.' prime city'; 

                   }
                }

            }
        }
    }
   }

但这不起作用,它不会改变城市的名称

我做错了什么?

谢谢!

3 个答案:

答案 0 :(得分:2)

我想我知道你需要什么:

if($aryCityCodes) {
    if (count($ary) > 0) {
        foreach ($ary as $key => $row) {
            if (in_array($row[1], $aryCityCodes)) {
                $ary[$key][2] .= ' prime city';
            }
        }
    }
}

演示:https://eval.in/599514

检查输出:

Array
(
    [0] => Array
        (
            [0] => John
            [1] => LND
            [2] => London prime city
        )

    [1] => Array
        (
            [0] => Mary
            [1] => NY
            [2] => New York prime city
        )

    [2] => Array
        (
            [0] => Larry
            [1] => AMS
            [2] => Amsterdam
        )

答案 1 :(得分:0)

创建新数组,查看arrCityCodes数组中的匹配项(您还可以添加严格匹配项)并在找到匹配项时附加值。

$newArray =[];
foreach ($ary as $row) {
    if (in_array($row[1], $arrCityCodes)) {
        $newArray[] = [
            $row[0], $row[1], $row[2] . ' prime city'
        ];
     } else {
        $newArray[] = [
            $row[0], $row[1], $row[2]
        ];
     }
}

这里的好处是您仍然可以访问原始对象,有时可以使用它。

答案 2 :(得分:0)

foreach正在处理您的数据副本,如果您没有明确指定它应该是&#34;参考&#34;。

像这样更改两个foreaches:

    foreach($ary as &$item) 

        foreach ($item as $key => &$value)