Q1
第一个问题关于弱类型
$str1 = "yabadabadoo";$str2 = "yaba";if (strpos($str1,$str2)) { echo "/"" . $str1 . "/" contains /"" . $str2 . "/"";} else {echo "/"" . $str1 . "/" does not contain /"" . $str2 . "/"";}正确运行的输出结果:
$str1 = "yabadabadoo";$str2 = "yaba";if (strpos($str1,$str2) !== false) { echo "/"" . $str1 . "/" contains /"" . $str2 . "/"";} else {echo "/"" . $str1 . "/" does not contain /"" . $str2 . "/"";}需要注意的是我们使用了!==,在php 和 JS中= !相对== 更为严格需要要求数据类型一致。
$x = 5;echo $x; echo "<br />"; echo $x+++$x++; echo "<br />"; echo $x; echo "<br />"; echo $x---$x--; echo "<br />"; echo $x;实际运行结果是
$a = "1";$b = &$a;$b = "2$b";请问 $a 和 $b的值各位多少
var_dump(0123 == 123);var_dump("0123" == 123);var_dump("0123" === 123);var_dump(0123 == 123);// false,PHP会默认把0123当作8进制来处理,实际转化为10进制就是83,显然这不是相等的。var_dump("0123′ == 123);// true这里php会非常有趣的将"0123′转换成一个数字而且默认去掉了前面的0也就是123==123var_dump("0123′ === 123);// false很显然上面的问题已经说过了数字和字符串类型不一致。Q5
$referenceTable = array();$referenceTable["val1"] = array(1, 2);$referenceTable["val2"] = 3;$referenceTable["val3"] = array(4, 5); $testArray = array(); $testArray = array_merge($testArray, $referenceTable["val1"]);var_dump($testArray); $testArray = array_merge($testArray, $referenceTable["val2"]);var_dump($testArray); $testArray = array_merge($testArray, $referenceTable["val3"]);var_dump($testArray);实际输出如下:
array(2) { [0]=> int(1) [1]=> int(2) }NULLNULL运行的时候你或许还能看到下面的警告
$testArray = array_merge($testArray, (array)$referenceTable["val1"]);var_dump($testArray);$testArray = array_merge($testArray, (array)$referenceTable["val2"]);var_dump($testArray);$testArray = array_merge($testArray, (array)$referenceTable["val3"]);var_dump($testArray);Q6
$x = true and false;var_dump($x);部分同学或许会第一时间想到false,实际上这里依旧是强调运算符的优先级,= 会比 and级别高点,因此等同下面的代码
$x = true;true and false答案显而易见。
$text = "John ";$text[10] = "Doe";上面代码执行完毕后 $text = “John D”(John后面会有连续的5个空格) strlen($text)会返回11
$v = 1;$m = 2;$l = 3; if( $l > $m > $v){ echo "yes";}else{echo "no";}实际的输出是”no”,只要仔细分析就不难得出
$x = NULL; if ("0xFF" == 255) { $x = (int)"0xFF";}实际的运行结果是$x=0而不是255.