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

Laravel Blade中pluck返回集合而非数组导致in_array报错求助

解决Laravel Blade中in_array()参数类型错误的问题

嘿,这个问题我之前踩过一模一样的坑!其实原因特别明确:你用$pug->ipbans->pluck('ip')拿到的不是原生PHP数组,而是Laravel Collection对象——虽然直接输出它的时候,会显示成["127.0.0.1","127.0.0.1"]这种类似数组的JSON格式,但本质上它是个对象,所以in_array()才会报参数类型错误。

给你两种靠谱的解决办法:

  • 方法一:用Collection自带的contains()方法(推荐)
    Laravel集合本身就提供了判断元素是否存在的方法,完全不用转数组,代码更简洁优雅,也是Laravel的最佳实践:

    $pug->ipbans->pluck('ip')->contains(Request::ip())
    
  • 方法二:把集合转成原生数组
    如果你一定要用in_array(),可以调用集合的toArray()方法,把它转换成PHP原生数组:

    in_array(Request::ip(), $pug->ipbans->pluck('ip')->toArray())
    

    这样第二个参数就符合in_array()的要求了,不会再触发错误。

顺便补个小知识点:集合对象之所以输出看起来像数组,是因为它实现了__toString()魔术方法,会自动转成JSON字符串,但实际类型还是Collection,这点要注意区分哦!

内容的提问来源于stack exchange,提问作者Kenneth Poulsen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 19:02:38