2016-02-19 11 views
0

У меня есть массив в yii2, и ocassionally это всего лишь один единственный объект, который не пуст (все остальные элементы массива пусты), и я не знаю, какой из них он. Как я могу найти ту, которая не пуста, или (моя идея, что я пытаюсь), для создания нового массива с помощью 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

i Я делаю это: '$ filter = array_filter ($ ttepk, function ($ item) { return $ item instanceof app \ models \ Model; });' Я получаю пустой массив. – user2511599

+0

reset() работает! Большое спасибо! – user2511599

Смежные вопросы