我试图在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
完全相同的数组...
我做错了什么?
1条答案
按热度按时间b1payxdu1#
默认的排序类型是
SORT_NUMERIC
,转换为数字后,所有的字符串都将是0
,因此在排序机制看来,所有字符串都是相等的,不会出现任何错误。对于字符串,请使用
SORT_NATURAL
、SORT_STRING
、SORT_LOCALE_STRING
或SORT_REGULAR
,例如:我认为Cookbook需要修复,因为它显示引用字符串字段而没有指定所需的排序类型。
另请参阅
*Cookbook〉集合〉排序