为何array_count_values()与Eloquent pluck配合报错?求助原因
问题原因分析:Laravel pluck结果无法直接用array_count_values的原因
- 你用
pluck('user_id')得到的不是原生PHP数组,而是Laravel的Collection对象。虽然它打印出来像数组,也能像数组一样通过下标访问(因为实现了ArrayAccess接口),但本质是个对象,不是真正的数组。 array_count_values()是PHP原生函数,它只能接受原生数组作为参数。当你把Collection对象传进去时,函数会把整个对象当作一个元素来处理,而不是遍历里面的user_id值,自然就会报错“只能统计字符串和整数值”。- 用foreach循环的时候,Collection支持迭代(实现了
IteratorAggregate接口),循环过程中会逐个取出里面的user_id整数,把它们存到普通数组里,这时再传给array_count_values(),参数是标准的原生数组,所以能正常工作。
另外给个更简便的方案:Laravel的Collection自带统计方法countBy(),直接调用$viewlogs->countBy()就能得到每个user_id的出现次数,不用手动转数组,更贴合Laravel的开发习惯。
内容的提问来源于stack exchange,提问作者shasabbir
相关产品推荐
相关产品推荐

