+7 495 449-70-26
web@aw-code.com

Поиск переменной в многомерном массиве

Задача: поиск переменной в многомерном массиве.

Зачем это нам нужно? Один из примеров: это меню категорий. У меня был проект в котором нужно было найти в многомерном массиве данные. Если найдено — то добавлялся элементу класс, если нет — то нет.

Само собой 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 минуты
        )
)