Как посчитать массив элементов коллекции, который зависит от условий?

#php #laravel

Вопрос:

У меня есть массив данных, который приведен ниже. И я прикрепил скриншот dd($data['attendances']) вывода здесь. Я использую цикл for для подсчета, но он не работает. Вопрос в том, как я могу подсчитать предметы коллекции, которые у registered = 'no' меня есть ? Любая помощь будет очень признательна.

     $data = [
        'employee'    => $employee,
        'attendances' => $attendances,
        'filter'      => $filter,
        'no_records'  => "No Records",
        'weekend'     => "Weekly Off"
    ];

    for ( $i=0; $i <= count($data['attendances']); $i   ){
        if ($data['attendances'][$i]['registered'] = 'no'){
            echo count($data['attendances'][$i]['registered']);
        }
    }

//  dd($data['attendances']);
 

Приведенный выше for цикл кода выдает ошибку, которая:

count(): Параметр должен быть массивом или объектом, реализующим счетный

введите описание изображения здесь

Ответ №1:

Для подсчета всех предметов коллекции registered , которые должны no :

 dd($data['attendances']->where('registered', 'no')->count());
 

Вы можете найти все методы обработки коллекции в документации здесь: https://laravel.com/docs/8.x/collections#available-methods

В этом случае мы сначала используем ->where фильтрацию коллекции (беря только элементы с registered to no ), а затем используем count метод для подсчета их количества.

Комментарии:

1. Без проблем, я обновил свой ответ некоторыми объяснениями и дополнительной информацией. Хорошего дня

2. не уверен count(array($data['attendances']));