我有这个包含城市代码的数组:
$aryCityCodes = array ("LND", "NY");
另一个包含用户数据的数组:
$ary = array (
array("John", "LND","London"),
array("Mary", "NY","New York"),
array("Larry", "AMS","Amsterdam")
);
我需要最终得到像$ ary这样的数组,但是如果$ ary中的城市代码包含在$ aryCityCodes中,$ ary中的城市名称必须跟随&#34; prime city&#34; < / p>
到目前为止,这就是我所做的:
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';
}
}
}
}
}
}
但这不起作用,它不会改变城市的名称
我做错了什么?
谢谢!
答案 0 :(得分:2)
我想我知道你需要什么:
if($aryCityCodes) {
if (count($ary) > 0) {
foreach ($ary as $key => $row) {
if (in_array($row[1], $aryCityCodes)) {
$ary[$key][2] .= ' prime city';
}
}
}
}
检查输出:
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
)
答案 1 :(得分:0)
创建新数组,查看arrCityCodes数组中的匹配项(您还可以添加严格匹配项)并在找到匹配项时附加值。
$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]
];
}
}
这里的好处是您仍然可以访问原始对象,有时可以使用它。
答案 2 :(得分:0)
foreach正在处理您的数据副本,如果您没有明确指定它应该是&#34;参考&#34;。
像这样更改两个foreaches:
foreach($ary as &$item)
和
foreach ($item as $key => &$value)