Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何识别PHP变量是否为数组_Php - Fatal编程技术网

如何识别PHP变量是否为数组

如何识别PHP变量是否为数组,php,Php,如何检查PHP变量是否为数组? $value是我的PHP变量,如何检查它是否是数组?echo是数组($variable) php有一个名为is_array($var)的函数,它返回bool以指示参数是否为数组 是数组-查找变量是否是数组 我在这里添加了一个迟来的答案,因为如果人们使用多个数组检查,我认为我有一个更好的解决方案 如果只是检查单个数组,那么使用PHP的is\u array()就可以很好地完成这项工作 if (is_array($users)) { is an array }

如何检查PHP变量是否为数组? $value是我的PHP变量,如何检查它是否是数组?

echo是数组($variable)


php有一个名为is_array($var)的函数,它返回bool以指示参数是否为数组
是数组-查找变量是否是数组


我在这里添加了一个迟来的答案,因为如果人们使用多个数组检查,我认为我有一个更好的解决方案

如果只是检查单个数组,那么使用PHP的
is\u 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\u array
。它非常精确地描述了它的功能。一次调用节省的几微秒不值得对源代码进行混淆。如果你半年后再看一次这段代码,你会抓挠你的头,如果你想在这里做的话。
is_array  :  7.9920151233673
cast, === :  1.8978719711304