5.0.0 - 严重 - 已处理
版本6.0.2源码位置:vendor\topthink\think-helper\src\Collection.php
问题所在: 512行 order()方法
修正问题:在查询后的结果集中,如果存在数组值为数字类型时,会造成strcmp()函数无法通过参数类型检测。
修正方法:改用组合比较符
修正后的效果:可以兼容任何类型数据的输入
修正后的代码:
public function order(string $field, string $order = null)
{
return $this->sort(function ($a, $b) use ($field, $order) {
$fieldA = $a[$field] ?? null;
$fieldB = $b[$field] ?? null;
return 'desc' == strtolower($order) ? $fieldB <=> $fieldA : $fieldA <=> $fieldB; // 修正行在这里
});
} 