PHP弱类型语言中类型判断操作实例详解


Posted in PHP onAugust 10, 2017

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

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

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

$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中,== 会先进行类型转换,再进行对比,而===会先比较类型,如果类型不同直接返回不相等,参考如下示例

$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

$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之类的函数要用恒等于来判断

$sms = "abc";
if(strpos($sms,'a') != false ){
  echo 1;
}else{
  echo 2;
}

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

$sms = "abc";
if(strpos($sms,'a') !== false ){
  echo 1;
}else{
  echo 2;
}

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

5、换行需要双引号

$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程序设计有所帮助。

PHP 相关文章推荐
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
Sep 10 PHP
php中通过虚代理实现延迟加载的实现代码
Jun 10 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
使用HMAC-SHA1签名方法详解
Jun 26 PHP
php中strtotime函数用法详解
Nov 15 PHP
[原创]PHP简单开启curl的方法(测试可行)
Jan 11 PHP
php实现计算百度地图坐标之间距离的方法
May 05 PHP
Thinkphp实现短信验证注册功能
Oct 18 PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
May 30 PHP
php源码的使用方法讲解
Sep 26 PHP
PHP7 其他语言层面的修改
Mar 09 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
Aug 10 #PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
Aug 10 #PHP
基于PHP实现栈数据结构和括号匹配算法示例
Aug 10 #PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
Aug 10 #PHP
PHP数组内存利用率低和弱类型详细解读
Aug 10 #PHP
Laravel实现定时任务的示例代码
Aug 10 #PHP
PHP编程实现计算抽奖概率算法完整实例
Aug 09 #PHP
You might like
php操作csv文件代码实例汇总
2014/09/22 PHP
PHP实现加密的几种方式介绍
2015/02/22 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
浅谈javascript的数据类型检测
2010/07/10 Javascript
再谈javascript原型继承
2014/11/10 Javascript
javascript 面向对象封装与继承
2014/11/27 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
2016/03/17 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
jQuery 动态粒子效果示例代码
2020/07/07 jQuery
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
python中的__slots__使用示例
2015/02/26 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
python中logging包的使用总结
2018/02/28 Python
python 编码规范整理
2018/05/05 Python
windows下python安装小白入门教程
2018/09/18 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
html5启动原生APP总结
2020/07/03 HTML / CSS
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
厨师个人自我鉴定范文
2014/04/19 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
离职感谢信
2015/01/21 职场文书
企业计划生育责任书
2015/05/09 职场文书
党小组评议意见
2015/06/02 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏