cakephp 4中的Collection::sortBy()出现问题

fnatzsnv  于 2022-11-24  发布在  PHP
关注(0)|答案(1)|浏览(125)

我试图在cakephp 4中使用Collection::sortBy()按字母顺序对电子邮件帐户列表进行排序,但它似乎不像我使用它的方式那样工作。

$accounts = [
          [
            'email' => 'webmaster@example.com',
            'isBlocked' => false,
          ],
          [
            'email' => 'dom@example.com',
            'isBlocked' => false,
          ],
          [
            'email' => 'me@example.com',
            'isBlocked' => false,
          ],
          [
            'email' => 'guy@example.com',
            'isBlocked' => false,
          ],
          [
            'email' => 'test@example.com',
            'isBlocked' => false,
          ]
        ];

$sorted = collection($accounts)
            ->sortBy('email', SORT_ASC)
            ->toArray();

debug($sorted);

debug($sorted)会传回与$accounts完全相同的数组...
我做错了什么?

b1payxdu

b1payxdu1#

默认的排序类型是SORT_NUMERIC,转换为数字后,所有的字符串都将是0,因此在排序机制看来,所有字符串都是相等的,不会出现任何错误。
对于字符串,请使用SORT_NATURALSORT_STRINGSORT_LOCALE_STRINGSORT_REGULAR,例如:

sortBy('email', SORT_ASC, SORT_NATURAL)

我认为Cookbook需要修复,因为它显示引用字符串字段而没有指定所需的排序类型。
另请参阅


*Cookbook〉集合〉排序

相关问题