2012-02-24 105 views
-3

我想检查变量的内容是数字还是数组。 is_array(),is_int(),is_numeric()不实际工作。目前我正在使用似乎工作的myArray [1]。但我想知道为什么这个功能之一不能为我做这个?检查变量是数字还是数组

编辑:

看来,我有这样的事情作为myArray['id']内容,这始终是一个数组。

+0

...数字13是一个数组?你的意思是'is_array(13)=== true'? – JJJ 2012-02-24 10:05:07

回答

4
$array = is_array(13) ? "yes" : "no"; 
$int = is_int(13) ? "yes" : "no"; 
$numeric = is_numeric(13) ? "yes" : "no"; 

echo $array."\n", $int."\n", $numeric."\n"; 

回复与

no 
yes 
yes 

正如预期的那样,所以我真的不知道这个问题是什么在这里!

这也许值得一提的是,如果你运行:

$array = is_array("13") ? "yes" : "no"; 
$int = is_int("13") ? "yes" : "no"; 
$numeric = is_numeric("13") ? "yes" : "no"; 

echo $array."\n", $int."\n", $numeric."\n"; 

的回应是:

no 
no 
yes 

这又是你所期望的 - 一个字符串和数字不表示为阵列。

运行的GetType这样的:

echo gettype(13); 

表明它是一个integer

1

您可以使用gettype函数。

$type = gettype($variable); 
if ($type == 'array') { 
    // it's an array 
} else if ($type == 'integer') { 
    // it's an integer 
} else { 
    // it's a trap ! 
} 
+0

从德语gettype文档(松散地翻译):'警告 切勿使用gettype检查某个类型,因为返回的字符串可能会在将来更改。此外,这种方法很慢,因为它涉及字符串比较。 改用is _ * - 函数。http://php.net/manual/de/function.gettype.php – Basti 2012-02-24 10:10:07

1

你确定吗?

$myNumber = 13; 

$myArray = array("test" => "data"); 

if(is_array($myNumber)) { 
    echo "myNumber is an array!"; 
}else{ 
    if(is_numeric($myNumber)) { 
     echo "myNumber is not an array, but it is a number!"; 
    } 
} 

我得到myNumber不是数组,但它是一个数字!

2

这不是一个真正的问题。 is_array()显然返回想到什么真正问题数量13

假的?

虽然PHP 可以让你从可变访问数字1和3包含使用用于访问阵列成员的语法相同数目13,它不会使阵列出的整数。它仅仅是一个“语法糖”。

你必须验证你开始写问题之前的印象。

+0

对不起。我仍然需要学习。 – testing 2012-02-24 10:39:56