Поиск значений из обычного массива в ассоциативном
Решаю задачу, по её условия есть ассоциативный массив $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']} совпало";
}