2

我想对一个多维数组进行排序,其中每个数组都是一个对象。示例位于

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);

但是如果我以这种格式格式化我的请求,我会收到以下错误:

可捕获的致命错误:stdClass 类的对象无法转换为字符串

代码如下,带有一个键/值对的姓氏,键为 last_name:

foreach ($mw_users as $key => $value) {
$last_name[$key]  = $row['last_name'];
}

array_multisort($last_name, SORT_ASC, $mw_users);
4

2 回答 2

2

为要排序的每一列定义一个数组,并使用对象引用语法添加列值:

// 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 ...。

于 2013-04-25T13:49:09.823 回答
0

在 PHP 中对对象数组进行排序时,它有助于覆盖 __tostring() 魔术方法。这样,各种排序方法将对象视为可比较的对象。例如,员工对象可以输出该员工的姓名或员工 ID。

于 2014-07-08T19:24:46.383 回答