php 有意思的小题

时间:2023-12-12 14:44:20

/**

* 你的是一个数字和一个字符串进行比较,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)=