Найти сумму значений всех элементов, которые находятся в ключе в массиве php

Вот допустим у меня есть массив президентов 
 $presidents = [
        [
        'id' => 1,
        'name' => 'Теодор',
        'surname' => 'Рузвельт',
        'year_leader' => '14.09.1901',
        'year_left' => '04.03.1909',
        'party' => 'Республиканец',
        'leader_days' => 2728,
        'vice_president' => 'Чарльз Фэрбенкс',
        ],
        [
        'id' => 2,
        'name' => 'Уильям',
        'surname' => 'Тафт',
        'year_leader' => '04.03.1909',
        'year_left' => '04.03.1913',
        'party' => 'Республиканец',
        'leader_days' => 1461,
        'vice_president' => 'Джеймс Шерман',
        ]];

и там их ещё много у меня.... Мне нужно найти сколько всего Республиканцев существует(вывести числом нужно). Я уже не знаю как делать, типо допустим если я через foreach делаю или даже без него с помощью там $res = array_search('Республиканец', $presidents), а потом я это через count($res), через array_sum($res) делаю и мне постоянно подчёркивает переменную в count/array_sum, и пишет Expected type 'Countable|array'. Found 'int|string|false'. Пробовал через $found array_column($presidents, 'Республиканец') и потом in_array($found), но при подсчёте уже пишет, что boolean нельзя посчитать. Вот как через цикл делал

foreach($presidents as $key => $values){
 //$found_res = array_column($presidents, 'Республиканец'); 
$values = array_search('Республиканец', $values);
 $sum_res = count($values); 
echo "Количество республиканцев = $sum_res";
 }

В этом случае выводилась та ошибка Expected type 'Countable|array' в переменной $sum_res на $values и если sum заменить на array_sum то пишет ту же ошибку. А в других случаях я писал то же самое только без цикла, просто потом подумал, что может он перебрать весь массив без цикла не может и поставил его Что я не так делаю?


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

Автор решения: Ivаn
 $presidents = [
    [
    'id' => 1,
    'name' => 'Теодор',
    'surname' => 'Рузвельт',
    'year_leader' => '14.09.1901',
    'year_left' => '04.03.1909',
    'party' => 'Республиканец',
    'leader_days' => 2728,
    'vice_president' => 'Чарльз Фэрбенкс',
    ],
    [
    'id' => 2,
    'name' => 'Уильям',
    'surname' => 'Тафт',
    'year_leader' => '04.03.1909',
    'year_left' => '04.03.1913',
    'party' => 'Республиканец',
    'leader_days' => 1461,
    'vice_president' => 'Джеймс Шерман',
    ]];

    $n_o_f = 0;

    foreach($presidents as $values){//перебираем внутренние массивы     
        //если в массиве ключ 'party' равен 'Республиканец'
        if($values['party'] == 'Республиканец') {

            $n_o_f++;//то + 1 к переменной

            }
     }

     echo "Республиканцев аж {$n_o_f}";//выводить нужно обязательно после цикла
→ Ссылка