我想对一个多维数组进行排序,其中每个数组都是一个对象。
的例子http://php.net/manual/en/function.array-multisort.php
表示需要创建要排序的列数组
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
但是如果我以这种格式格式化我的请求,则会出现followiwng错误:
捕获致命错误:类stdClass的对象无法转换为字符串
代码如下,其中键/值对的姓氏为key last_name:
foreach ($mw_users as $key => $value) {
$last_name[$key] = $row['last_name'];
}
array_multisort($last_name, SORT_ASC, $mw_users);
答案 0 :(得分:1)
为要排序的每列定义一个数组,并使用对象引用语法添加列值:
// Obtain a list of columns
foreach ($mw_users as $mw_user) {
$lastnames[] = $mw_user->last_name;
$firstnames[] = $mw_user->first_name;
}
// Sort the data with volume descending, edition ascending
// Add $mw_users as the last parameter, to sort by the common key
array_multisort($lastnames, SORT_ASC, $firstnames, SORT_ASC, $mw_users);
与排序数据库结果类似:http://php.net/...array-multisort.php...。
答案 1 :(得分:0)
在PHP中排序对象数组时,有助于覆盖__tostring()魔术方法。这样,各种排序方法将对象视为可比较的东西。例如,员工对象可以输出该员工的姓名或员工ID。