You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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; ?>

错误原因

  1. array_column()返回的是数组,直接和字符串"Charging"比较永远不成立,逻辑错误。
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:05:19