发现一道很让人不淡定的PHP面试题

这题忘了是新浪还是妈妈网的面试题了,挺让人纠结的,在开发中没有处理过不同类型的变量直接进行运算和比较,看到这样的题目真的比较茫然。


[php]

<?php

$b=array(1,2,3,4);

$c=40;

$a=$b>$c?4:5;

echo $a;

?>

[/php]

和 [php]
<?php

$b=array(1,2,3,4);

$c=0;

$a=(int)$b>$c?4:5;

echo $a;

?>

[/php]

有大侠知道这是为什么不。求真相! PS:看到有同学的留言,说array和obj不能比较,我记得array有时也可以叫“数组对象”,二者转换非常简单。既然能相互转换,那在做不同类型的比较运算的时候,PHP又是按怎样的方式进行转换和对比的呢。 [php]

$array = array(‘aaaa’, 11111111, ‘bbbb’, ‘cccc’, 2222, ‘dddddddd’, ‘eeeeeeee’);

$obj = new stdclass();

$obj->aaaaaaa = ‘aaaaaaaa’;
$obj->bbbbbbb = ‘bbbbbbb’;
$obj->ccccccc = ‘ccccccc’;
$obj->ddddddd = ‘ddddddd’;
$obj->eeeeeee = ‘eeeeeee’;
echo $array > $obj ? "大于" : "小于";//out put "小于"

$array = (object) $array ;          //数组对象转换

echo $array > $obj ? "大于" : "小于";//out put "大于"

[/php]

发表评论

回复 ddd 取消回复

评论列表(3)

  • ddd

    2011.7.16 16:07

    林子大了,什么鸟都有。什么想法的人都有。
    我还碰到过:
    $a = 1;
    $b = ‘2abc’;
    echo $a + $b;
    郁闷,拿一个数字和字母相加的。

    回复
  • sjolzy

    2011.4.22 15:04

    1,array比其他类型 array总是更大;object比任何其它类型 object 总是更大;(array比object不同类不能比较)

    2,把array强转为整型变为1

    个人一点愚见。

    Array也可以转换成对象,如果要比较,PHP应该会做转换,我去测试下下。

    回复
  • isur

    2011.4.17 13:04

    array和int比大小我还是第一次看到有这种想法的人
    数组比较大小是一位一位比较?
    所以我的理解就是c的位数都没有b的大,
    比如1肯定是没有1111大的.

    回复