以下是代码片段: if('dgfdg' == 0) echo 'Yes'; else echo 'No'; ?> |
上面的程序会输出什么?这个例子是从其他blog上看见的,时间长了记不清是那个blog了。这个blog上说,如果答不出来说明基础知识还不够。偶很惭愧,觉得自己的回答没有底气。于是实践了一下。
发现这是个PHP类型转换的例子,字符串与数字同时操作的时候,字符串会转化为整型,看下面的例子
以下是引用片段: [root@login yayu]# php -r "if('gfd' == 0) echo 'Yes'; else echo 'No'; echo \"\n\";" Yes [root@login yayu]# php -r "if('gfd544' == 0) echo 'Yes'; else echo 'No'; echo \"\n\";" Yes [root@login yayu]# php -r "if('56gfd544' == 0) echo 'Yes'; else echo 'No'; echo \"\n\";" No [root@login yayu]# php -r "if('5gfd544' == 5) echo 'Yes'; else echo 'No'; echo \"\n\";" Yes |
再看一下,字符串是如何转化为整型的:
以下是引用片段: [root@login shengting]# php -r "echo (int) 10; echo \"\n\";" 10 [root@login shengting]# php -r "echo (int) '10gdfgfd'; echo \"\n\";" 10 [root@login shengting]# php -r "echo (int) 'gdfgfd'; echo \"\n\";" 0 [root@login shengting]# php -r "echo (int) 'gdfgfd10'; echo \"\n\";" 0 |
从上面可以看出,转换的时候和第一个字符有很大关系。纯字母会直接转换为0,字母开头的字符串也会转换为0,只有以数字开头才会转换为该字符串前几个数字,此时有字母在后则完全截断了。
下面是手册上的例子:
以下是代码片段: $foo = 1 + "10.5"; // $foo is float (11.5) $foo = 1 + "-1.3e3"; // $foo is float (-1299) $foo = 1 + "bob-1.3e3"; // $foo is integer (1) $foo = 1 + "bob3"; // $foo is integer (1) $foo = 1 + "10 Small Pigs"; // $foo is integer (11) $foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2) $foo = "10.0 pigs " + 1; // $foo is float (11) $foo = "10.0 pigs " + 1.0; // $foo is float (11) ?> |
以前也遇见过这情况自己也没往深研究!学习了
by ilsanbao 2008-04-02 16:48:01