本文实例讲述了PHP弱类型语言中类型判断操作。分享给大家供大家参考,具体如下:
1、php一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较。PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。
例如:123abc转换后应该是123,而abc则为0,0==0这当然是成立的.具体可以参考官方手册:如果比较一个整数和字符串,则字符串会被转换为整数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
$a = ( $b =4)+5;
echo $a ; //9
echo '<p>' ;
var_dump(1== '1a' ); //true
echo '<p>' ;
var_dump(1== '2a' ); //false
echo '<p>' ;
var_dump(1== 'a1' ); //false
echo '<p>' ;
var_dump( "1" == '1a' ); //false
echo '<p>' ;
var_dump( '51a' +6); //57
echo '<p>' ;
var_dump( 'a51' +6); //6
|
2、在PHP中,== 会先进行类型转换,再进行对比,而===会先比较类型,如果类型不同直接返回不相等,参考如下示例
1
2
3
4
5
6
7
8
9
|
$a = null;
$b = '' ;
$c = 0;
echo ( $a == $b ) ? 1 : 0; // 输出1
echo ( $a === $b ) ? 1 : 0; // 输出0
echo ( $a == $c ) ? 1 : 0; // 输出1
echo ( $a === $c ) ? 1 : 0; // 输出0
echo ( $b == $c ) ? 1 : 0; // 输出1
echo ( $b === $c ) ? 1 : 0; // 输出0
|
3、php中的empty和isset函数
1)变量为:0,"0",null,'',false,array()时,使用empty函数,返回的都为true
2)变量未定义或者为null时,isset函数返回的为false,其他都未true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
$a = null;
$b = '' ;
$c = 0;
$d = "0" ;
$e = false;
$f = array ();
var_dump( empty ( $a )); //true
echo '<p>' ;
var_dump( empty ( $b )); //true
echo '<p>' ;
var_dump( empty ( $c )); //true
echo '<p>' ;
var_dump( empty ( $d )); //true
echo '<p>' ;
var_dump( empty ( $e )); //true
echo '<p>' ;
var_dump( empty ( $f )); //true
echo '<p>' ;
var_dump(isset( $a )); //false
echo '<p>' ;
var_dump(isset( $b )); //true
echo '<p>' ;
var_dump(isset( $c )); //true
echo '<p>' ;
var_dump(isset( $d )); //true
echo '<p>' ;
var_dump(isset( $e )); //true
echo '<p>' ;
var_dump(isset( $f )); //true
echo '<p>' ;
var_dump(isset( $g )); //false
|
4、使用strpos之类的函数要用恒等于来判断
1
2
3
4
5
6
|
$sms = "abc" ;
if ( strpos ( $sms , 'a' ) != false ){
echo 1;
} else {
echo 2;
}
|
这种情况,很明显是判断abc字符串中,是否包含a,预期结果应该是要输出1的,实际结果输出为2。这是因为strpos函数匹配不到目标字符串时,返回false,匹配到了目标字符串时,会返回目标字符串,在搜索字符串中的索引位置,此处返回了0。
1
2
3
4
5
6
|
$sms = "abc" ;
if ( strpos ( $sms , 'a' ) !== false ){
echo 1;
} else {
echo 2;
}
|
改成恒等于,才是正确的。
5、换行需要双引号
1
2
|
$time = date ( 'Y-m-d H:i:s' ). '\r\n' ;
file_put_contents ( 'filename.txt' , $time , FILE_APPEND);
|
如果这样写,打开文件是这样的2016-09-02 08:04:04\r\n2016-09-02 08:04:05\r\n2016-09-02 08:04:05\r\n2016-09-02 08:04:05\r\n2016-09-02 08:04:22
正确的写法是\r\n,使用双引号包起来
希望本文所述对大家PHP程序设计有所帮助。
原文链接:http://www.cnblogs.com/kangjianrong/p/5830843.html