1 回答

TA貢獻1799條經(jīng)驗 獲得超9個贊
executeQuery方法返回MongoDB\Driver\Cursor。它實現(xiàn)了Traversable接口,因此您可以foreach
對其進行操作。這可能會讓您感到困惑,認(rèn)為它是一個數(shù)組。其實不是。
要對結(jié)果進行排序,您需要首先將游標(biāo)轉(zhuǎn)為數(shù)組。然后,如果我理解正確的話,您將按“詳細(xì)信息”數(shù)組的大小對行進行排序,如下所示:
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery("DB.col", $query);
$rows = $cursor->toArray();
usort($rows, function ($a, $b) {
? return sizeof($a->detail) <=> sizeof($b->detail);
});
return $rows;
注意:如果順序顛倒,只需交換call比較函數(shù)中的$a->detail
and即可。$b->detail
usort()
如果您沒有使用 PHP 7,則可能沒有可以使用的spaceship 運算符。?<=>
只需使用此比較函數(shù)即可:
usort($rows, function ($a, $b) {
? if (sizeof($a->detail) == sizeof($b->detail)) {
? ? return 0;
? }
? return (sizeof($a->detail) > sizeof($b->detail)) ? 1 : -1;
});
PS 你真的應(yīng)該升級到 PHP 7。PHP 5.6 已經(jīng)不再支持多年了。它的性能較差且安全性較差。
- 1 回答
- 0 關(guān)注
- 149 瀏覽
添加回答
舉報