Laravel Collection Sortby非法字符串偏移量'detail'

时间:2018-12-15 04:46:06

标签: php arrays laravel collections

我需要按详细信息名称“ ASC”排序

我点击了此链接。https://laravel.com/docs/5.4/collections#method-sortby

enter image description here

这是我的调试数据

enter image description here

这是我的代码

$collection = collect($data);
dd($collection);
$sorted = $collection->sortBy(function ($product, $key) {
    return count($product['detail']);
});

$sorted->values()->all();

但是显示错误“字符串偏移量'明细'非法”

2 个答案:

答案 0 :(得分:0)

下次,请以文本形式而非屏幕截图形式发布代码/ dd结果。谢谢!

这里:

$collection = collect($data);

您的$data不是一个产品数组,而是一个产品(大概是产品属性的数组)。

因此,发生->sortBy(..)遍历属性namedetail的情况。

因此,在第一次迭代中(您可以通过在dd($product)内进行sortBy来看到$product实际上是这样的:

'Tour Guide Multilingual'

,关键是:

'product'

由于尝试访问字符串的索引['detail'](因此,“非法 string 偏移量'detail'”),您会收到错误消息

所以这是一个逻辑问题。我不确定您如何获得$data或预期的结果,但是您的$data中只有1种产品,因此没有任何排序依据

答案 1 :(得分:0)

尝试一下。

$collection = collect($data);
$sorted = $collection->sortBy(function ($product, $key) {
    return $product['name'];
});

$sorted->values()->all();