第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用usort對MongoDB查詢結(jié)果進行排序

如何使用usort對MongoDB查詢結(jié)果進行排序

PHP
守著一只汪 2024-01-19 15:52:42
嘗試對對象中存在的數(shù)組進行排序,但出現(xiàn)錯誤usort() 期望參數(shù) 1 為數(shù)組我在任何地方都沒有找到此錯誤的任何有用的解決方案,如何按數(shù)組元素總數(shù)對數(shù)組[詳細(xì)信息]進行排序。這是我的代碼 -$query = new MongoDB\Driver\Query($filter, $options);$cursor = $manager->executeQuery("DB.col", $query);foreach($cursor as $row) {  foreach($row->detail as $item) {    function cmp($a, $b) {      return $a['detail'] > $b['detail'];    }    usort($row, "cmp");  }} 我的數(shù)組的架構(gòu):array(    [0]=>stdclass object(         [_id] => MongoDB\BSON\ObjectId Object (                    [oid] => 5f55f95815a8508e2deac8dd                )        [Date] => 9/12/2020        [title] => ram        [roll.n] => 5        [detail] => Array(            [0] => stdclass object(                 [title] => John                [id] =>55                [class] => six)            [1] => stdclass object(                 [title] => Doe                [id] =>550                [class] => six)            [2] => stdclass object(                 [title] => Jean                [id] =>9                [class] => one)            [3] => stdclass object(                 [title] => AI                [id] =>90                [class] => one)            )    )    [1]=>stdclass object(         [_id] => MongoDB\BSON\ObjectId Object (                [oid] => 5f        )        [title] => sunny        [roll.n] => 50        [detail] => Array(            [0] => stdclass object (                 [title] => lilly                [id] =>551                [class] => six)            [1] => stdclass object(                 [title] => Doel                [id] =>550                [class] => six)            [2] => stdclass object(                 [title] => rehaman                [id] =>9                [class] => one        )    ))
查看完整描述

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->detailand即可。$b->detailusort()

如果您沒有使用 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)不再支持多年了。它的性能較差且安全性較差。


查看完整回答
反對 回復(fù) 2024-01-19
  • 1 回答
  • 0 關(guān)注
  • 149 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號