繁体   English   中英

替换多维数组中的字符串

[英]Replace string in multidimensionnal array

我有一个像这样的数组:

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
    )
    ...
    ...
)

我想通过0、1、2等标识符来更改城市名称。

实际上,我是通过以下代码完成此操作的:

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...
}

我认为这不是最好的方法,因为我有很多城市。 是否可以定义一个像这样的数组:

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

并使用功能简单地执行更改?

如果通过引用传递它们,则可以直接替换数组的值

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);

$replacements数组的逻辑应类似于:

foreach ($big_array as $key => $value)
{
    if (!isset($replacements[$value['city']])
    {
        echo "Could not find city '".$value['city']."' in replacements array, skipping";
        continue;
    }

    $value['city'] = $replacements[$value['city']];

    $big_array[$key] = $value;
}
$find = array(0, 1, etc...);

$replace = array("NEW-YORK", "WASHINGTON", ect ...);

foreach ($big_array as $key => $value){
     $big_array[$key]['city'] = str_replace($find, $value['city']);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM