Nea*_*eal 6 php string casting
我在一些帖子上看过这个:
$num = "5";
if(((int)$num) < 4){ ...}
Run Code Online (Sandbox Code Playgroud)
是否有理由将"5"作为一个int或者它说得好:
if($num < 4){ ...}
Run Code Online (Sandbox Code Playgroud)
因为我用我的代码测试了它:
echo $num + 4; //outputs 9
echo (int)$num + 4;//also outputs 9
Run Code Online (Sandbox Code Playgroud)
更新: 我的问题是关于一般的投射,上面只是一两个例子.
更新2:关闭类型杂耍手册php
<?php
$foo = "0"; // $foo is string (ASCII 48)
$foo += 2; // $foo is now an integer (2)
$foo = $foo + 1.3; // $foo is now a float (3.3)
$foo = 5 + "10 Little Piggies"; // $foo is integer (15)
$foo = 5 + "10 Small Pigs"; // $foo is integer (15)
?>
Run Code Online (Sandbox Code Playgroud)
^^^^为什么最后2件事发生了?
在你所提到的情况下,没有真正好的理由.这是因为,PHP不仅是一种动态类型语言,所使用的运算符也不是类型敏感的.
然而,铸造也有很多好的用途.如果(int)您可以进行强制转换以确保在操作期间始终使用整数.此外,通过提前构建,您可以节省PHP,以便以后继续输入juggle.
由于问题编辑而编辑(rev4)
最后两个项发生是因为PHP会在数学运算期间尝试将字符串强制转换为整数.因此,它将字符串解析为数字.一旦找不到有效的整数,就会返回找到的数字.
基本上,从字符串的开头,找到与整数/浮点数编号格式匹配的任何内容.只要STOPS匹配该格式,就返回您拥有的内容.如果第一个字符与格式不匹配,return 0;.
有关更好的解释,请阅读:http://www.php.net/manual/en/language.types.integer.php#language.types.integer.casting
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |