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

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

評估對象數(shù)組內(nèi)容的最快方法

評估對象數(shù)組內(nèi)容的最快方法

PHP
湖上湖 2022-05-27 16:24:49
可以說我有一個對象數(shù)組。我想看看是否有任何對象具有 name 屬性foo。在 C# 等其他語言中,有一種簡單的評估方法,例如:objArray.Contains(x => x.Name == "foo");在 PHP 中有比這更好的方法:$hasFoo = false;foreach($objs as $obj){    if($obj->name == "foo")    {        $hasFoo = true;        break;    }}
查看完整描述

2 回答

?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個贊

不是更好,但您可以過濾并檢查是否為空或使用 (bool) 轉(zhuǎn)換為布爾值:


$hasFoo = array_filter($objs, funtion($v) { return $v->name === ‘foo’; });



$hasFoo = (bool)array_filter($objs, funtion($v) { return $v->name === ‘foo’; });


查看完整回答
反對 回復(fù) 2022-05-27
?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個贊

沒有(從 PHP 7.3 開始)。

您可以使用更清晰但效率較低的語法array_reduce():


function satisfies(array $objectArray, $callback) {

    return array_reduce(

        $objectArray,

        function($found, $item) use ($callback) {

            return $found || call_user_func($callback, $item);

        },

        false

    );

}



$has = satisfies($array, function($obj) { return $obj->name === 'foo'; });

該函數(shù)將迭代地調(diào)用回調(diào)直到它返回true,然后它將繼續(xù)遍歷整個數(shù)組(盡管速度相當(dāng)快)。如果數(shù)組中沒有元素返回真值,則函數(shù)返回false.


在每次迭代時發(fā)出調(diào)用并傳遞一個對象,該函數(shù)比普通的foreach.


而且,正如@Jeto 非常正確地指出的那樣,我對它進(jìn)行了過度設(shè)計(jì)。本來可以寫的


function satisfies(array $objectArray, $callback, $ifFound = true, $ifNotFound = false) {

    foreach ($objectArray as $obj) {

        if (call_user_func($callback, $obj)) {

            return $ifFound;

        }

    }

    return $ifNotFound;

}


查看完整回答
反對 回復(fù) 2022-05-27
  • 2 回答
  • 0 關(guān)注
  • 104 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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