[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка типа массива
Renden
Добрый день, подскажите как сделать проверку типа массива, т.е многомерный или нет.
Еще подробнее:
функция возвращает массив такой:
Array ( [mod_name] => news [tpl_name] => main.tpl )
Или такой:
Array ( [0] => Array ( [mod_name] => news [tpl_name] => main.tpl ) [1] => Array ( [mod_name] => messages [tpl_name] => main.tpl ) )

В первом случае почучить имя шаблона (tpl_name) надо допустим так $arr['tpl_name'], во втором уже так $arr[0]['tpl_name'].
А на выходе мне нужна просто переменная с шаблоном поэтому думаю надо сделать условие типа:
if (масив мгомерный) $a = $arr[0]['tpl_name'];
else $a = $arr['tpl_name'];
Как так сделать?)




Спустя 1 минута, 24 секунды (26.04.2011 - 11:37) alex12060 написал(а):
if (isset($arr[0]['tpl_mode'])) $a = $arr[0]['tpl_name'];
else $a = $arr['tpl_name'];

Спустя 1 минута, 57 секунд (26.04.2011 - 11:39) Renden написал(а):
alex12060
Нде.. ппц))) А вообще можно узнать тип массива, или только его существование?)

Спустя 11 минут, 49 секунд (26.04.2011 - 11:51) Игорь_Vasinsky написал(а):
А вообще можно узнать тип массива, или только его существование?) 


всмысле: индексный или ассоциативный?

или ты про простые и многомерные?

в первом случае достаточно ключи в цикле на is_numeric() проверить

во втором is_array

Спустя 3 минуты, 18 секунд (26.04.2011 - 11:54) Renden написал(а):
Игорь_Vasinsky
Я про 2 случай, так функция is_array проверяет массив это или нет, а не тип или я ошибаюсь?

alex12060, спасиб за подсказку, чето я седня туплю нереально)

Спустя 2 минуты, 7 секунд (26.04.2011 - 11:56) Игорь_Vasinsky написал(а):
is_array выдаст TRUE - если массив, FALSE - если не массив

1.$var = array(1,2,3,4);
2. $var = "value";

echo is_array($var);

Спустя 5 минут, 35 секунд (26.04.2011 - 12:02) alex12060 написал(а):
Я вижу пока 2 пути:

Извлекаешь 0 элемент массива и делаешь проверку:

if (is_array($arr[0])) {
# some expr
}

Или пробегаешься по массиву foreach() и проверяешь $value по такому-же принципу, как и выше.

Спустя 34 секунды (26.04.2011 - 12:02) Игорь_Vasinsky написал(а):
is_numeric() - использется по другому, через foreach() - проверить все ключи массива через is_numeric() - если есть FALSE (хотябы один) - значит ассоциативный

Спустя 33 секунды (26.04.2011 - 12:03) Raito-kun написал(а):
function is_multi($a) {
$rv = array_filter($a,'is_array');
if(count($rv) > 0) return true;
return false;
}

Спустя 37 секунд (26.04.2011 - 12:03) Игорь_Vasinsky написал(а):
вот тема развита и рассжована

http://phpforum.ru/index.php?showtopic=43762&hl=is_numeric

Спустя 1 минута, 41 секунда (26.04.2011 - 12:05) linker написал(а):
foreach($arr as $key => $value)
{
if (is_array($value))
$a = $value['tpl_name'];
else
$a = $value;
}

Спустя 6 минут, 24 секунды (26.04.2011 - 12:11) Renden написал(а):
Спасибо всем,я понял как проверять, но решил сделать проще:
Array ( [mod_name] => news [tpl_name] => main.tpl )
возвращаю терь в таком виде:
Array ( [0] => ( [mod_name] => news [tpl_name] => main.tpl ) )
Дабы остальной код не переписывать smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.