Нужно сравнить два ключа в массиве и вывести где совпало php

Допустим есть массив

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

мне нужно узнать вообще по заданию кто из вице-президентов был президентом(это ключ name и vice_president). Я через foreach прогоняю массив и сравниваю

$names = array_column($presidents, 'name');
    $vice = array_column($presidents, 'vice_president');
   $resp_visces = $dem_visec= $pres_vice =[]; // записываем в три переменные пустой массив
    foreach($presidents as $key => $val){
        $val['party'];
        if($val['party'] === 'Республиканец'){
            $resp_visces[]=$val['vice_president'];         
        }
        else{
            $dem_visec[]=$val['vice_president'];
        }
        if($vice == $names){
            $pres_vice[] = $val['vice_president'];
        }
    }
print_r($pres_vice);

ну и вывожу естественно, только вот мне он выводит пустой массив

Array (
)

Я вроде же всё правильно делаю, что не так то? Допустим кто-то там придерётся из вас к переменной $val, то вот я делал другим циклом и всё равно тоже самое

foreach($presidents as $key1 => $value){
        $value['vice_president'];
        if($value['vice_president'] == $names){
            $pres_vice[] = $value['vice_president'];
        }
    }

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

Автор решения: Проста Miha

Почему так сильно парится? Вы можете просто исрользовать фунскию array_intersect
Как-то так

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

$president = array_column($presidents, 'name');
$vice_president = array_column($presidents, 'vice_president');

$result_array = array_intersect($president, $vice_president);
print_r($result_array);

Ответ :

Array
(
    [0] => Джеймс Шерман
)
→ Ссылка