Q1:弱类型
$str1='itisagoodday';
$str2='itis';
if(strpos($str1, $str2)){
echo "\"".$str1."\"contians\"".$str2."\"";
}else {
echo "\"".$str1."\"dose not contain\"".$str2."\"";
}
运行结果:”itisagoodday”dose not contain”itis”
strpos是返回字符串
str2在
str1中的位置,没有找到则返回false,实际则是运行结果返回了0,而在if语句中0也被当作false,所以我们需要对false做类型判断。
代码如下:
$str1='itisagoodday';
$str2='itis';
if(strpos($str1, $str2)!==false){
echo "\"".$str1."\"contians\"".$str2."\"";
}else {
echo "\"".$str1."\"dose not contain\"".$str2."\"";
}
echo "<hr>";
注:我们使用了!==,在php和js中=!相对==更为严格要求数据类型一致。
Q2:
$x=5;
$y=2;
echo $x+++$x; //11
echo "<br>";
echo $x; //6
echo "<br>";
echo $x+(++$y); //9
echo "<br>";
echo $x; //6
echo "<br>";
echo $y; //3
echo "<br>";
echo $x+++$y++; //9
echo "<br>";
echo $x; //7
echo "<br>";
echo $y; //4
echo "<br>";
echo $x---$y--; //3
echo "<br>";
echo $x; //6
关于$x++和$x--,经常遇见,我们只需记住$x++使用最近的值,然后自增。
Q3:变量的引用
$a='1';
$b=&$a;
$b="2$a";
echo $a; //21
echo "<br>";
echo $b; //21
echo "<br>";
$b="2$b";
echo $a; //221
echo "<br>";
echo $b; //221
刚看到可能会想到$a=1,$b=21,仔细分析会发现$b=&$a,这里$b是变量$a的引用而不是直接赋值
Q4:下面是true还是false
var_dump(0123==123); //bool(false)
echo "<br>";
var_dump('0123'==123); //bool(true)
echo "<br>";
var_dump('0123'===123); //bool(false)
echo "<hr>";
第一条,PHP会默认将0123当作8进制进行处理,实际转化为10进制就是83,当然不相等
第二条,这里PHP非常有趣的将‘0123’转化成一个数字而且默认去掉了前面的0即123==123
第三条,数字和字符串类型不相同
Q5:下面的代码会输出什么呢
echo "<pre>";
$rt=array();
$rt['val1']=array(1,2);
$rt['val2']=3;
$rt['val3']=array(4,5);
$ta=array();
$ta=array_merge($ta,$rt['val1']);
print_r($ta);
$ta=array_merge($ta,$rt['val2']);
print_r($ta);
$ta=array_merge($ta,$rt['val3']);
print_r($ta);
实际输出:
Array
(
[0] => 1
[1] => 2
)
null
null
运行的时候可能会看到下面的警告:
Warning: array_merge(): Argument #2 is not an array in ...
Warning: array_merge(): Argument #1 is not an array in ...
array_merge()需要传入的参数都是数组,如果不是,则返回null,并且报警告错误。
可以修改如下:
echo "<pre>";
$rt=array();
$rt['val1']=array(1,2);
$rt['val2']=3;
$rt['val3']=array(4,5);
$ta=array();
$ta=array_merge($ta,(array)$rt['val1']);
print_r($ta);
$ta=array_merge($ta,(array)$rt['val2']);
print_r($ta);
$ta=array_merge($ta,(array)$rt['val3']);
print_r($ta);
echo "<hr>";
输出结果如下:
Array
(
[0] => 1
[1] => 2
)
Array
(
[0] => 1
[1] => 2
[2] => 3
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)