检查变量是数字还是数组

时间:2012-02-24 10:02:23

标签: php arrays numbers

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

修改

似乎我有myArray['id']之类的内容,这总是一个数组。

4 个答案:

答案 0 :(得分: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 :(得分:2)

这不是一个真正的问题。 对于数字is_array()

13显然会返回false

有任何真正的问题吗?

尽管PHP 可以允许您使用与访问数组成员相同的语法从变量包含数字13访问数字1和3,但它不会使数组超出整数。它只是一种“语法糖”。

在开始撰写问题之前,您必须验证您的展示次数。

答案 2 :(得分: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不是数组,但它是一个数字!

答案 3 :(得分:0)

您可以使用gettype功能。

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