首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP替换数组中的值

问PHP替换数组中的值
EN

Stack Overflow用户
提问于 2016-07-02 12:25:34
回答 3查看 44关注 0票数 0

我有一个带有城市代码的数组:

代码语言:javascript
复制
$aryCityCodes = array ("LND", "NY");

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

代码语言:javascript
复制
$ary = array (
    array("John", "LND","London"),
    array("Mary", "NY","New York"),
    array("Larry", "AMS","Amsterdam")
); 

我需要一个类似于$ary的数组,但是如果$ary中的城市代码包含在$aryCityCodes中,那么$ary中的城市名称必须后面跟着“黄金城市”。

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

代码语言:javascript
复制
   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'; 

                   }
                }

            }
        }
    }
   }

但这不起作用,也不改变城市的名称。

我做错了什么?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-02 12:35:35

我想我知道你需要什么了

代码语言:javascript
复制
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

检查输出:

代码语言:javascript
复制
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
        )
票数 2
EN

Stack Overflow用户

发布于 2016-07-02 12:36:14

创建新数组,查看arrCityCodes数组中是否匹配(您也可以在其中添加严格匹配),并在找到匹配时追加值。

代码语言:javascript
复制
$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]
        ];
     }
}

这里的好处是您仍然可以访问原始对象,这有时很方便。

票数 0
EN

Stack Overflow用户

发布于 2016-07-02 12:37:21

foreach正在处理您的数据的副本,如果您没有明确指定它应该是“通过引用”。

像这样改变这两个预兆:

代码语言:javascript
复制
    foreach($ary as &$item) 

和

代码语言:javascript
复制
        foreach ($item as $key => &$value) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38160134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档