1、问题一关于弱类型
$str1 = 'yabadabadoo';$str2 = 'yaba';if (strpos($str1,$str2)) { echo "\\"" . $str1 . "\\" contains \\"" . $str2 . "\\"";} else {echo "\\"" . $str1 . "\\" does not contain \\"" . $str2 . "\\"";}
正确运行的输出结果:
"yabadabadoo" does not contain "yaba"
strpos是返回字符串str2在str1的位置,没有找到则返回false然而实际上这次返回了0而在if语句中0也被当作false,所以,我们需要对false做类型判断,正确的代码如下:
$str1 = 'yabadabadoo';$str2 = 'yaba';if (strpos($str1,$str2) !== false) { echo "\\"" . $str1 . "\\" contains \\"" . $str2 . "\\"";} else {echo "\\"" . $str1 . "\\" does not contain \\"" . $str2 . "\\"";}
需要注意的是我们使用了!==,在php 和 JS中= !相对== 更为严格需要要求数据类型的一致。
2、下面的输出结果会是怎样?
$x = 5;echo $x; echo ""; echo $x+++$x++; echo ""; echo $x; echo ""; echo $x---$x--; echo ""; echo $x; 实际运行结果是5 11 7 1 5
x++和x++和x--这个问题其实非常容易遇见,我们只需记住$x++使用最近的值,然后才自增。
运算符的优先级,++ 是明显高于 +,因此先执行++ 再执行 + 。关于运算符的优先级,有的时候我们真的可以通过括号来让我们的程序更加让人直观的了解,毕竟代码它不光是用于执行的,有的时候或许团队的可读性也是提高效率的一种。