douyao7390 2014-03-05 10:04
浏览 40
已采纳

替换多维数组中的字符串

I have an array like this :

Array
(
    [0] => Array
    (
        [objectid] => 197
        [adresse] => D554
        [city] => NEW-YORK
        [lat] => 12,545484654687
        [long] => 12,545484654687
    )

    [1] => Array
    (
        [objectid] => 198
        [adresse] => D556
        [city] => WASHINGTON
        [lat] => 12,545484654687
        [long] => 12,545484654687
    )
    ...
    ...
)

I want to change the city name by an identifier like 0, 1, 2...

Actually, I done this by this code :

foreach ($big_array as $key => $value){
    if ($value['city'] == "NEW-YORK"){
        $big_array[$key] = str_replace("NEW-YORK", 0, $value);
    } elseif($value['city'] == "WASHINGTON") {
        $big_array[$key] = str_replace("WASHINGTON", 1, $value);
    } etc...
}

I don't think it's the best way to do that, I have a huge list of cities. Is it possible to define an array like :

$replacements = array(
    "NEW-YORK" => 0,
    "WASHINGTON" => 1,
    etc...
)

and use a function to perform the change simply ?

  • 写回答

3条回答 默认 最新

  • dongyang1518 2014-03-05 10:10
    关注

    You can replace the values of the array directly if you pass them by reference

    foreach ($big_array as &$value) {
        $city = $value['city'];
    
        // for cities that we don't have a replacement
        if (! isset($replacements[$city])) {
            continue;
        }
    
        $value['city'] = $replacements[$city];
    }
    
    // just to be sure we don't keep any reference to the $value variable
    unset($value);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来