PHP is_array在true上返回“1”并且在false时中断

时间:2013-08-18 16:45:02

标签: php jquery arrays

我将一个jQuery数组传递给PHP。我的回调函数在字符串时返回值,但在发送数组时会中断。中断是在PHP代码中。

我测试了以下内容:

$yes = array('this', 'is', 'an array');
echo is_array($yes);

返回“1”。

$yes = "array";
echo is_array($yes); 

打破了代码。

为什么我不回“真”和“假”?

4 个答案:

答案 0 :(得分:1)

如果您发布的代码直接来自文本编辑器,那么echo is_array($yes)末尾缺少分号就是其破解的原因。

编辑:只是为了澄清你正在返回true / false,而不是以1或0的形式。你应该将is_array()与条件结合使用。

$yes = 'asdf';

if (is_array($yes)){
    echo 'true';
} else {
    echo 'false';
}

返回false

$yes = array('this', 'is', 'an', 'array');

if (is_array($yes)){
    echo 'true';
} else {
    echo 'false';
}

返回true

答案 1 :(得分:1)

$yes = array('this', 'is', 'an array');
echo is_array($yes); 

输出 - > 1

is_array($yes)返回true,相当于echo true;,输出1

$yes = "array";
echo is_array($yes);//missing semicolon 

输出(无) - >

因为is_array($yes)返回false,相当于echo false;,而不会输出任何内容

来自Manual

  

布尔值TRUE值转换为字符串“1”。布尔值为FALSE   转换为“”(空字符串)。这允许转换回来   在布尔值和字符串值之间。

所以如果你编码

会更好
echo (is_array($yes)) ? 'do something condition is true' : 'do something condition is false';

答案 2 :(得分:0)

尝试这样的事情:

echo is_array($yes) ? 'true' : 'false';

如果您想知道为什么这是必要的,那就是为什么只做echo is_array($yes)还不够,请查看此示例:http://codepad.org/PcCbvTGe

如您所见,true输出为1false不产生输出。


使用if进行的测试:http://codepad.org/OIOZLqFc

<?php
$yes = array("trtr");
if(is_array($yes)) {
   echo "is an array";
} else {
   echo "is not";
}

答案 3 :(得分:0)

$test_array = ( (array)$var === $var )? true : false;
if( $test_array ) ...

function test_array( $var )
{
    return (array)$var === $var;
}
//...the anywhere else ...
if( test_array( $my_var) )...

如果要显示数据及其类型,只需使用:

var_dump( $my_var );