2016-02-19 92 views
0

我在yii2中有一個數組,其中只有一個非空的單個對象(數組的所有其他元素都是空的),我不知道它是哪一個。我怎麼能找到一個不是空的,或者(我的想法是我正在嘗試的),用array_filter創建一個新的數組(但我不確定它是否也與對象數組一起工作)其中的一個對象。Yii2對象數組,找到一個

if (count($ttepk) == 1) { 
    $ttep_filtered[] = array_filter($ttepk); 
    $id = $ttep_filtered[0]->id; 
    } 

但它也沒有工作。我收到錯誤消息:PHP Notice – yii\base\ErrorException Trying to get property of non-object。 array_filter之前,它看起來是這樣的:

Array 
    (
    [3] => app\models\Model Object 
     (

array_filter後:

Array 
(
    [0] => Array 
     (
      [3] => app\models\Model Object 
       (

如此看來,array_filter是不是我所需要的,或我使用了錯誤的方式。 你能幫我嗎?謝謝!

+0

這是什麼意思「空對象」? – Dmitry

+0

請告訴我們你試過了什麼 – phenxd

+0

所以你有一個數組元素('count($ ttepk)== 1')。但沒有對象。試試'reset($ array)['id']'。但更好的創建數組var_dump,因爲我不明白這個數組裏面有什麼。或者你可以使用'is_object'來檢查當前的數組值。 – Dmitry

回答

0

你可以嘗試這樣的事情

$filtered = array_filter($ttepk, function($item) { 
    return $item instanceof app\models\Model; 
}); 

if (count($filtered) == 1) { 
    $id = reset($filtered)->id; 
} 
+1

我這樣做:'$ filtered = array_filter($ ttepk,function($ item){ return $ item instanceof app \ models \ Model; });'我得到一個空數組。 – user2511599

+0

reset()的作品!非常感謝! – user2511599