Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 替换多维数组中的字符串_Php_Arrays - Fatal编程技术网

Php 替换多维数组中的字符串

Php 替换多维数组中的字符串,php,arrays,Php,Arrays,我有这样一个数组: Array ( [0] => Array ( [objectid] => 197 [adresse] => D554 [city] => NEW-YORK [lat] => 12,545484654687 [long] => 12,545484654687 ) [1] => Array ( [obj

我有这样一个数组:

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

并使用函数简单地执行更改?

带有
$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;
}

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

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

如果($key['city']==“NEW-YORK”){,它不应该是
吗?查找
php数组\u merge
$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']);
}