鍍金池/ 問答/PHP/ 這種數(shù)組怎樣按指定條件篩選結(jié)果?

這種數(shù)組怎樣按指定條件篩選結(jié)果?

$allnodes=[
            0 =>['userid' => 10012,'lft' => 4,'rgt' => 5,'rank' => 1],
            1 =>['userid' => 10006,'lft' => 6,'rgt' => 7,'rank' => 2],
            2 =>['userid' => 10011,'lft' => 14,'rgt' => 15,'rank' => 3],
            3 =>['userid' => 10008,'lft' => 16,'rgt' => 19,'rank' => 1],
            4 =>['userid' => 10013,'lft' => 22,'rgt' => 23,'rank' => 1]
          ];

怎么查找出 lft+rgt<=27,對(duì)應(yīng)的結(jié)果集。正確結(jié)果應(yīng)該是 0,1 行。

有沒有什么高效的算法。我記得在c#里面好像可以把這種形式變成一個(gè)虛擬表,可以使用sql語(yǔ)句。直接在內(nèi)存里面查,不鏈接數(shù)據(jù)庫(kù)。在php里面好像只能遍歷出來(lái)嗎?

foreach 應(yīng)該很快能計(jì)算出來(lái),一行行遍歷。有沒有那種內(nèi)置的php數(shù)組函數(shù),不用循環(huán)就能搞出來(lái)。

回答
編輯回答
互擼娃

不用循環(huán)是不可能的,array_filter內(nèi)部還是循環(huán)

var_dump(array_filter($allnodes, function($v) {
    return $v['lft'] + $v['rgt'] < 27;
}));
2018年6月19日 13:46