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

Laravel:如何检查请求中的数组是否包含特定值?

你的写法确实有误,我来帮你理清问题并给出正确方案

首先,你当前用的 $request->has('sale_channels_enabled.'.$v_sale_channel->sale_channel_id) 是在检查请求中是否存在一个命名为 sale_channels_enabled.{你的ID} 的独立字段,而不是检查 sale_channels_enabled 这个数组里是否包含目标ID值。这完全不是你想要的逻辑。

因为你提到 sale_channels_enabled 是仅包含销售渠道ID的数组,正确的检查方式应该是先获取这个数组,再判断目标值是否在数组内,这里有几种常用的Laravel写法:

  • 基础写法(兼容所有Laravel版本):
    先确认数组存在,再用in_array检查值:

    if ($request->has('sale_channels_enabled') && in_array($v_sale_channel->sale_channel_id, $request->sale_channels_enabled)) {
        // 目标ID存在于数组中的逻辑
    }
    
  • 更严谨的写法(Laravel 5.6+):
    用filled替代has,确保数组存在且不为空:

    if ($request->filled('sale_channels_enabled') && in_array($v_sale_channel->sale_channel_id, $request->sale_channels_enabled)) {
        // 执行逻辑
    }
    
  • 简化写法:
    直接获取数组(默认空数组避免报错),再检查:

    $saleChannels = $request->input('sale_channels_enabled', []);
    if (in_array($v_sale_channel->sale_channel_id, $saleChannels)) {
        // 目标ID存在时的操作
    }
    

额外补充:如果你的sale_channels_enabled是关联数组(比如键是销售渠道ID,值是布尔值或其他),那你原来的点语法写法才会生效,但根据你的描述它是仅存ID的索引数组,所以一定要用上面的方法来检查值是否存在。

内容的提问来源于stack exchange,提问作者vikas hemanth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:30:20