Поиск значений из обычного массива в ассоциативном

Решаю задачу, по её условия есть ассоциативный массив $cars с ключами "position", принимающими рандомные значения и простой массив с числами $zoneCityAll. Как проверить на совпадение значений ключей position каждый элемент этого массива со значениями из простого массива и вывести сообщение типа "Машина 1 совпала"?

$city1 = 15;
$cityRadius1 = 10;
$city2 = 800;
$cityRadius2 = 15;

$cityStart1 = $city1 - $cityRadius1;
$cityDiameter1 = $city1 + $cityRadius1;

$cityStart2 = $city2 - $cityRadius2;
$cityDiameter2 = $city2 + $cityRadius2;

$cars = [
    ['name' => 'Машина 1', 'position' => rand (0, 1000)],
    ['name' => 'Машина 2', 'position' => rand (0, 1000)],
    ['name' => 'Машина 3', 'position' => rand (0, 1000)],
    ['name' => 'Машина 4', 'position' => rand (0, 1000)],
    ['name' => 'Машина 5', 'position' => rand (0, 1000)],
    ['name' => 'Машина 6', 'position' => rand (0, 1000)],
    ['name' => 'Машина 7', 'position' => rand (0, 1000)],
    ['name' => 'Машина 8', 'position' => rand (0, 1000)],
    ['name' => 'Машина 9', 'position' => rand (0, 1000)],
    ['name' => 'Машина 10', 'position' => rand (0, 1000)],
    ];

$zoneCity1 = range($cityStart1, $cityDiameter1);

$zoneCity2 = range($cityStart2, $cityDiameter2);

$zoneCityAll = array_merge($zoneCity1, $zoneCity2);


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

Автор решения: teran

как-нибудь так

$filteredCars = array_filter($cars, function($car) use ($zoneCityAll){
                     return in_array($car['position'], $zoneCityAll)
                 });

foreach($filteredCars as $car){
   echo "{$car['name']} совпало"; 
}

либо просто циклом

foreach($cars as $car){
    if(!in_array($car['position'], $zoneCityAll))  continue;
    echo "{$car['name']} совпало";
} 
→ Ссылка