如何从PHP数组中匹配指定元素并输出对应内容?
问题描述
现有PHP代码用于输出汽车预订附加项:
<?php if(sizeof($post->car_booking_extra) == 0): ?> N/A <?php else: ?> <?php echo implode(array_column($post->car_booking_extra, 'name'), '<br />'); ?> <?php endif; ?>
运行后输出示例:
Baby Seat Charging Etc.
尝试查找特定项(如“Charging”)并显示指定文本时,以下代码报错:
<?php if(array_column($post->car_booking_extra, 'name') == "Charging" ); ?> DISPLAY THIS <?php else: ?> <?php endif; ?>
错误原因
array_column()返回的是数组,直接和字符串"Charging"比较永远不成立,逻辑错误。- if语句语法错误:使用短标签语法时,条件后应该用
:而非;,否则会中断语句结构导致报错。
可行解决方案
方案1:用in_array快速判断
先提取所有附加项名称到数组,再用in_array()检查目标值是否存在:
<?php $extraNames = array_column($post->car_booking_extra, 'name'); if (in_array("Charging", $extraNames)): ?> DISPLAY THIS <?php else: ?> <!-- 找不到时的内容,可留空或自定义 --> <?php endif; ?>
方案2:遍历数组精准匹配
如果需要在匹配时执行额外逻辑(比如获取该项的其他字段),可以直接遍历数组:
<?php $isChargingAdded = false; foreach ($post->car_booking_extra as $item) { if ($item['name'] === "Charging") { $isChargingAdded = true; break; } } if ($isChargingAdded): ?> DISPLAY THIS <?php else: ?> <!-- 找不到时的内容 --> <?php endif; ?>
方案3:整合原有的空数组判断
如果需要保留原逻辑(空数组时显示N/A),同时处理特定项匹配:
<?php if (sizeof($post->car_booking_extra) == 0): ?> N/A <?php else: ?> <?php $extraNames = array_column($post->car_booking_extra, 'name'); if (in_array("Charging", $extraNames)): ?> DISPLAY THIS <?php else: ?> <?php echo implode($extraNames, '<br />'); ?> <?php endif; ?> <?php endif; ?>
内容的提问来源于stack exchange,提问作者nmedia
相关产品推荐
相关产品推荐

