Как определить переменную PHP является массивом или нет - PullRequest
0 голосов
/ 16 июля 2009

Как проверить, является ли переменная PHP массивом? $ value - это моя переменная PHP, и как проверить, является ли она массивом?

Ответы [ 4 ]

8 голосов
/ 16 июля 2009

echo is_array ($ variable);

http://us3.php.net/is_array

3 голосов
/ 16 июля 2009

php имеет функцию с именем is_array ($ var), которая возвращает bool, чтобы указать, является ли параметр массивом или нет http://ir.php.net/is_array

1 голос
/ 16 июля 2009

is_array - определяет, является ли переменная массивом

http://uk.php.net/is_array

0 голосов
/ 25 июля 2014

Я добавляю поздний ответ, так как думаю, что у меня есть лучшее решение, если люди используют несколько проверок массива.

Если вы просто проверяете один массив, тогда использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...