Как проверить есть ли в массиве моделей запись со значением?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Vindective
Сообщения: 87
Зарегистрирован: 2014.04.18, 14:21

Как проверить есть ли в массиве моделей запись со значением?

Сообщение Vindective »

Подскажите пожалуйста как проверить есть ли в массиве моделей запись со значением?
Т.е. получаем список моделей

Код: Выделить всё

$array = ['tag1', 'tag2', 'tag3'];

/* |id|text|entity_id|.... */
$tags = Tag::find()->where(['entity_id' => $this->entity_id])->all();
foreach($array as $tag){
.....
}
и если в $tags есть тег значение которого равно Tag->text то ничего не делать

caHek2x
Сообщения: 1226
Зарегистрирован: 2016.04.12, 20:41

Re: Как проверить есть ли в массиве моделей запись со значением?

Сообщение caHek2x »

Код: Выделить всё

$array = ['tag1', 'tag2', 'tag3'];
$tags = Tag::find()->where(['entity_id' => $this->entity_id])->all();
$tags_text = ArrayHelper::getColumn($tags, "text");
$ok = false;
foreach ($array as $text) {
    if (array_search($text, $tags_text)!==false){
        $ok = $text;
        break;
    }
}
if ($ok!==false) echo "Нашли совпадение с ".$ok;
else echo "НЕ Нашли совпадений";
ну это как один из вариантов .. может есть что более красивое ...

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как проверить есть ли в массиве моделей запись со значением?

Сообщение zelenin »

Код: Выделить всё

$array = ['tag1', 'tag2', 'tag3'];
$tags = Tag::find()->where(['entity_id' => $this->entity_id])->all();

$tagsText = ArrayHelper::getColumn($tags, "text");

return count(array_intersect($array, $tagsText)) > 0; 

Ответить