Как проверить, является ли переменная PHP массивом? $ value - моя переменная PHP и как проверить, является ли это массивом?Как определить переменную PHP массив или нет
ответ
echo is_array (переменная $);
РНР функция с именем is_array ($ Var), которая возвращает логическое значение, чтобы указать, является ли параметр массива или не http://ir.php.net/is_array
is_array - Находит ли переменная является массивом
Я добавляю здесь более поздний ответ, так как я думаю, что у меня есть лучшее решение, если люди используют несколько проверок массива.
Если вы просто проверяете один массив, то использование PHP is_array()
делает работу просто прекрасной.
if (is_array($users)) {
is an array
} else {
is not an array
}
Однако, если вы проверяете несколько массивов - в цикле, например, - то есть гораздо лучшее решение, исполнительская для этого, используя бросок:
if ((array) $users !== $users) {
// is not an array
} else {
// is an array
}
ДОКАЗАТЕЛЬСТВО
Если запустить этот тест производительности, вы увидите разницу достаточно производительности:
<?php
$count = 1000000;
$test = array('im', 'an', 'array');
$test2 = 'im not an array';
$test3 = (object) array('im' => 'not', 'going' => 'to be', 'an' => 'array');
$test4 = 42;
// Set this now so the first for loop doesn't do the extra work.
$i = $start_time = $end_time = 0;
$start_time = microtime(true);
for ($i = 0; $i < $count; $i++) {
if (!is_array($test) || is_array($test2) || is_array($test3) || is_array($test4)) {
echo 'error';
break;
}
}
$end_time = microtime(true);
echo 'is_array : '.($end_time - $start_time)."\n";
$start_time = microtime(true);
for ($i = 0; $i < $count; $i++) {
if (!(array) $test === $test || (array) $test2 === $test2 || (array) $test3 === $test3 || (array) $test4 === $test4) {
echo 'error';
break;
}
}
$end_time = microtime(true);
echo 'cast, === : '.($end_time - $start_time)."\n";
echo "\nTested $count iterations."
?>
РЕЗУЛЬТАТ
is_array : 7.9920151233673
cast, === : 1.8978719711304
Извините, но я буду придерживаться 'is_array'. ** Он очень точно описывает, что он делает. ** Несколько микросекунд, которые вы экономите на одном вызове, не стоят зафускации исходного кода. Если вы снова просмотрите этот код через полгода, вы будете царапать голову WTF, которую вы пытались сделать здесь. – deceze
OH C'Mon! RTFM. – mpen