Поиск переменной в многомерном массиве
Technology
09.08.2023
8
4
2
Автор
adminЗадача: поиск переменной в многомерном массиве.
Зачем это нам нужно? Один из примеров: это меню категорий. У меня был проект в котором нужно было найти в многомерном массиве данные. Если найдено — то добавлялся элементу класс, если нет — то нет.
Само собой in_array
нам не подходит, так как у нас многомерный массив.
Так что нам нужен аналог PHP функции in_array
для многомерного массива. В связи с этим, после долгих поисков я нашел готовую функцию, которая выполняет вышеназванную задачу.
Код рабочий, проверен на практике.
Код
Сама функция выглядит так:
<?
function in_multi_array($needle, $haystack)
{
$in_multi_array = false;
if(in_array($needle, $haystack))
{
$in_multi_array = true;
}
else
{
for($i = 0; $i < sizeof($haystack); $i++)
{
if(is_array($haystack[$i]))
{
if(in_multi_array($needle, $haystack[$i]))
{
$in_multi_array = true;
break;
}
}
}
}
return $in_multi_array;
}
?>
А вот код для ее запуска (наше условие):
<?
if ( in_multi_array( $needle, $haystack ) ) {
echo 'Найдено';
} else {
echo 'Соответствий нет';
}
//$needle <- Тут что мы ищем
//$haystack <- Тут многомерный массив, в котором мы ищем
?>
$needle
<- Тут что мы ищем
$haystack
<- Тут многомерный массив, в котором мы ищем
Заодно приведу вам пример многомерного массива:
Array
(
[0] => Array
(
[value] => 30
[description] => 30 секунд
)
[1] => Array
(
[value] => 45
[description] => 45 секунд
)
[2] => Array
(
[value] => 60
[description] => 1 минута
)
[3] => Array
(
[value] => 120
[description] => 2 минуты
)
)