我有一个带有城市代码的数组:
$aryCityCodes = array ("LND", "NY");还有另一个包含用户数据的数组:
$ary = array (
array("John", "LND","London"),
array("Mary", "NY","New York"),
array("Larry", "AMS","Amsterdam")
); 我需要一个类似于$ary的数组,但是如果$ary中的城市代码包含在$aryCityCodes中,那么$ary中的城市名称必须后面跟着“黄金城市”。
到目前为止,这就是我所做的
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';
}
}
}
}
}
}但这不起作用,也不改变城市的名称。
我做错了什么?
谢谢!
发布于 2016-07-02 12:35:35
我想我知道你需要什么了
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
)发布于 2016-07-02 12:36:14
创建新数组,查看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]
];
}
}这里的好处是您仍然可以访问原始对象,这有时很方便。
发布于 2016-07-02 12:37:21
foreach正在处理您的数据的副本,如果您没有明确指定它应该是“通过引用”。
像这样改变这两个预兆:
foreach($ary as &$item) 和
foreach ($item as $key => &$value) https://stackoverflow.com/questions/38160134
复制相似问题