php - 在对象 foreach 循环中将结果限制为一个,in_array 不起作用
问题描述
我有一个城市列表,这些城市可能存在一次或重复多次,也可能根本不存在。
使用 php 我想检查 city 是否在 foreach 中,如果存在则只打印一个输入。
以下工作完美,仅在存在时打印城市,但重复现有:
**Updated (added afterwards):**
$paradasarray= array();
$xml = new SimpleXMLElement($viajes);
foreach ($xml->parada as $excursion) {
$paradasObject = new stdClass();
$paradasObject->localidad = $excursion->localidad;
$paradasObject->localidad = str_replace('/<![CDATA[(.*)]]>/', '',
$paradasObject->localidad); $paradasarray[] = $paradasObject;
}
$paradasarray = json_encode($paradasarray); $paradasarray =
json_decode($paradasarray);
**end updated**
foreach ($paradasarray as $parada) {
if (strpos($parada->localidad, 'Benalmádena') !== false) {
echo '<option value="Benalmádena Costa">Benalmádena Costa</option>';
}
if (strpos($parada->localidad, 'Estepona') !== false) {
echo '<option value="Estepona">Estepona</option>';
}
}
我尝试过休息,但是当我应该得到两个城市时,我只得到两个城市之一,或者一个都没有。
解决方案
您需要从数组中删除重复值,因此使用获取localidad
数组列array_column()
并从中删除重复值array_unique()
$newParadasarray = array_unique(array_column($paradasarray, "localidad"));
所以你的代码应该改为
$newParadasarray = array_unique(array_column($paradasarray, "localidad"));
foreach ($newParadasarray as $parada) {
if (strpos($parada, 'Benalmádena') !== false)
echo '<option value="Benalmádena Costa">Benalmádena Costa</option>';
if (strpos($parada, 'Estepona') !== false)
echo '<option value="Estepona">Estepona</option>';
}
在演示中检查结果
更新:
localidad
我看到了您的完整代码,因此您可以创建一个仅包含值的数组。并使用array_unique
. 仅将底部代码添加到您的第一个循环(xml 循环)。
@$newParadasarray[] = $excursion->localidad;
并在这样的循环后删除重复值
$newParadasarray = array_unique($newParadasarray);
并通过数组循环打印选项
foreach ($newParadasarray as $parada) {
if (strpos($parada, 'Benalmádena') !== false)
echo '<option value="Benalmádena Costa">Benalmádena Costa</option>';
if (strpos($parada, 'Estepona') !== false)
echo '<option value="Estepona">Estepona</option>';
}
推荐阅读
- vba - 如何在VBA中连接数字字符串
- raspberry-pi - 在 raspi 3 上安装 opencv 时出现 SSLError
- angular - 如何避免嵌套的 rxJS 订阅
- c# - Swagger/Swashbuckle - JSON 与 XML 模式不对应
- c - 如何在函数外释放 malloc() 使用的内存?
- sql - Azure SQL 密码在来自 keyvault 时不满足复杂性,但在来自变量时不满足
- php - Laravel 在另一个 Trait 中使用 Trait 方法
- python - 如何保存保存在字典字典中的多个数据框?
- android - 我是初学者,我打算开发自己的应用程序,但我不知道如何在移动设备和网络上使用 1 个数据库
- java - JavaFX:用于放置矩形的嵌套 for 循环不起作用