@ShadowTrix

Как найти значение в массиве?

Есть такой массив:

$countries = array (
	0 => Country::__set_state(
	array(
		'name' => 'Afghanistan',
		'iso' => 'AF',
		'capital' => 'Kabul'
	)),
	 
	1 => Country::__set_state(
	array(
		'name' => 'Aland Islands',
		'iso' => 'AX', 
		'capital' => 'Mariehamn'
	)), 

	2 => Country::__set_state(
	array(
		'name' => 'Albania', 
		'iso' => 'AL',
		'capital' => 'Tirana'
	))
);


Получены такие данные ISO:

$values = ['AF', 'AL'];

Как их найти в вышеуказанном массиве?

Попытки:

№1

foreach ($values as $value) {
	if (array_key_exists($value, $countries)) {
		return true;
	}
}


№2

foreach ($values as $value) {
	if (in_array(['iso' => $value], $countries)) {
		return true;
	}
}


Не приводят к нужному результату.

Заранее благодарен за все ответы и комментарии.
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
array_filter — Фильтрует элементы массива с помощью callback-функции
$values = ['AF', 'AL'];

$result = array_filter(
	$countries,
	function($el) use ($values) {
		return in_array($el['iso'], $values);
	}
);


Share PHP code online
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ShadowTrix Автор вопроса
Пока остановился на таком рабочем варианте:

foreach($countries as $country) {
	foreach ($values as $value) {
		if($value == $country['iso']) {
			return true;
		}
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы