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之第五天
Oct 09 PHP
php环境下利用session防止页面重复刷新的具体实现
Jan 09 PHP
php按百分比生成缩略图的代码分享
May 10 PHP
thinkphp实现面包屑导航(当前位置)例子分享
May 10 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
php实现根据词频生成tag云的方法
Apr 17 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
Jul 09 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
Aug 18 PHP
php opendir()列出目录下所有文件的实例代码
Oct 02 PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 PHP
PHP内存溢出优化代码详解
Feb 26 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 DOS攻击实现代码(附如何防范)
2012/05/29 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
php批量转换文件夹下所有文件编码的函数类
2017/08/06 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
2015/08/21 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
Python编码爬坑指南(必看)
2016/06/10 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
pandas实现选取特定索引的行
2018/04/20 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
python使用递归的方式建立二叉树
2019/07/03 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
开业庆典活动策划方案
2014/09/21 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
Redis 哨兵集群的实现
2021/06/18 Redis
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS