登录  /  注册

php弱类型语言中关于类型判断的实例分析

黄舟
发布: 2017-08-10 11:49:20
原创
1196人浏览过

这篇文章主要介绍了php弱类型语言中类型判断操作,结合实例形式分析了php中针对数据类型的转换、判断及函数使用技巧与注意事项,需要的朋友可以参考下

本文实例讲述了PHP弱类型语言中类型判断操作。分享给大家供大家参考,具体如下:

1、php一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较。PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。

例如:123abc转换后应该是123,而abc则为0,0==0这当然是成立的.具体可以参考官方手册:如果比较一个整数和字符串,则字符串会被转换为整数


$a = ($b=4)+5;
echo $a;  //9
echo &#39;<p>&#39;;
var_dump(1==&#39;1a&#39;);  //true
echo &#39;<p>&#39;;
var_dump(1==&#39;2a&#39;);  //false
echo &#39;<p>&#39;;
var_dump(1==&#39;a1&#39;);  //false
echo &#39;<p>&#39;;
var_dump("1"==&#39;1a&#39;);  //false
echo &#39;<p>&#39;;
var_dump(&#39;51a&#39;+6);  //57
echo &#39;<p>&#39;;
var_dump(&#39;a51&#39;+6);  //6
登录后复制

2、在PHP中,== 会先进行类型转换,再进行对比,而===会先比较类型,如果类型不同直接返回不相等,参考如下示例


$a = null;
$b = &#39;&#39;;
$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


$a = null;
$b = &#39;&#39;;
$c = 0;
$d = "0";
$e = false;
$f = array();
var_dump(empty($a));  //true
echo &#39;<p>&#39;;
var_dump(empty($b));  //true
echo &#39;<p>&#39;;
var_dump(empty($c));  //true
echo &#39;<p>&#39;;
var_dump(empty($d));  //true
echo &#39;<p>&#39;;
var_dump(empty($e));  //true
echo &#39;<p>&#39;;
var_dump(empty($f));  //true
echo &#39;<p>&#39;;
var_dump(isset($a));  //false
echo &#39;<p>&#39;;
var_dump(isset($b));  //true
echo &#39;<p>&#39;;
var_dump(isset($c));  //true
echo &#39;<p>&#39;;
var_dump(isset($d));  //true
echo &#39;<p>&#39;;
var_dump(isset($e));  //true
echo &#39;<p>&#39;;
var_dump(isset($f));  //true
echo &#39;<p>&#39;;
var_dump(isset($g));  //false
登录后复制

4、使用strpos之类的函数要用恒等于来判断


$sms = "abc";
if(strpos($sms,&#39;a&#39;) != false ){
  echo 1;
}else{
  echo 2;
}
登录后复制

这种情况,很明显是判断abc字符串中,是否包含a,预期结果应该是要输出1的,实际结果输出为2。这是因为strpos函数匹配不到目标字符串时,返回false,匹配到了目标字符串时,会返回目标字符串,在搜索字符串中的索引位置,此处返回了0。


$sms = "abc";
if(strpos($sms,&#39;a&#39;) !== false ){
  echo 1;
}else{
  echo 2;
}
登录后复制

改成恒等于,才是正确的。

5、换行需要双引号


$time = date(&#39;Y-m-d H:i:s&#39;).&#39;\r\n&#39;;
file_put_contents(&#39;filename.txt&#39;, $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弱类型语言中关于类型判断的实例分析的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号