Страница 1 из 1

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

Добавлено: 2016.12.01, 17:45
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 то ничего не делать

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

Добавлено: 2016.12.01, 17:58
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 "НЕ Нашли совпадений";
ну это как один из вариантов .. может есть что более красивое ...

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

Добавлено: 2016.12.01, 19:06
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;