[英]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.