发现一道很让人不淡定的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]
林子大了,什么鸟都有。什么想法的人都有。
我还碰到过:
$a = 1;
$b = ‘2abc’;
echo $a + $b;
郁闷,拿一个数字和字母相加的。
1,array比其他类型 array总是更大;object比任何其它类型 object 总是更大;(array比object不同类不能比较)
2,把array强转为整型变为1
个人一点愚见。
array和int比大小我还是第一次看到有这种想法的人
数组比较大小是一位一位比较?
所以我的理解就是c的位数都没有b的大,
比如1肯定是没有1111大的.