Как проверить существует ли значение в массиве объектов

Всем привет. Подвис на такой проблеме. Есть следующая структура array из 3х объектов Post. Post имеет свойство date,которое в свою очередь есть коллекцией Datatime. Как проверить содержится ли определенная дата в в данной структуре?


Ответы (1 шт):

Автор решения: Dmitry Kozlov

Если "есть коллекцией" является, например, ArrayCollection, то можно так:

$searchValue = new DateTime();
$searchValue->setTime(0,0,0);

$founded = array_filter($postArray, static function ($post) use ($searchValue) {
    return !$post->date->filter(static function ($date) use ($searchValue) {
        // Для простого сравнения даты используем '=='
        // можете применить другой алгоритм сравнения, который вернет true или false
        return $date == $searchValue;
    })->isEmpty();
});

if(count($founded) > 0) {
    // искомое значение содержится в структуре
}
→ Ссылка