/**
* 你的是一个数字和一个字符串进行比较,PHP会把字符串转换成数字再进行比较。
* PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。
*
**/
1)$a =”abc”;
if($a==0){
echo “等于0”;
}else{
echo “不等于0”;
}
//输出结果是0;
2)$num1 = ‘1’;
$num2 = ‘a1’;
echo $num1 + $num2;
//结果输出1;
//这里,数字与字符相加,PHP会把字符串转换成数字再进行比较。字符串开头没有数字就输出0。1+0=1
3)
//有括号,先解析括号
$a =10;
$a=$a+(++$a)+($a++)+($a);echo “<br>”;
//$a=$a+(++$a)+($a++)+(++$a);
//10 11 11 13
var_dump($a); //结果输出45
4)最霸道的题来了
static $a=1;
$a++;
var_dump($a); //echo 3
static $a=2;
$a++;
var_dump($a);//echo 4
//php底层源码分析
5)count(); 统计数组的位数
echo count(‘567wefdfsdfasdaSaF’); //echo 1
echo count(null); //echo 0
echo count(false); //echo 1
6)
$a = 0123;
echo $a;
结果返回的是:83;
原因是 int类型的变量,如果是以0开始,就会把这个变量当成八进制来解析;
八进制的0123转换为十进制 恰恰为 83;
7)
function myfunc($a){
echo $a + 10;
}
$val = 10;
echo "myfunc($val)=".myfunc($val); //20myfunc(10)
//分析:
这道面试题主要是考察执行顺序,具体解答过程如下:
a.echo "myfunc($val)=";
单独这样的时候,输出结果为:myfunc(10)= ,说明双引号中只不解析函数,只解析变量
b.echo "myfunc($val)=".myfunc($val);
拼接上后面的函数后,结果为:20myfunc(10)= ,说明后面的函数先执行输出了20。然后执行了echo语句。
总结:第一步执行后面的函数输出了20,然后在执行echo语句。故结果为:20myfunc(10)=