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页面防重复提交方法总结
Nov 25 PHP
PHP把网页保存为word文件的三种方法
Apr 01 PHP
PHP获取youku视频真实flv文件地址的方法
Dec 23 PHP
php输出指定时间以前时间格式的方法
Mar 21 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
PHP实现获取中英文首字母
Jun 19 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
PHP编程求最大公约数与最小公倍数的方法示例
May 29 PHP
PHP运用foreach神奇的转换数组(实例讲解)
Feb 01 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 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
世界第一个无线广播电台 KDKA
2021/03/01 无线电
PHP开发文件系统实例讲解
2006/10/09 PHP
PHP 七大优势分析
2009/06/23 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
浏览器兼容console对象的简要解决方案分享
2013/10/24 Javascript
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
js实现聊天对话框
2020/02/08 Javascript
JavaScript实现鼠标移入随机变换颜色
2020/11/24 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
用python读写excel的方法
2014/11/18 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
敬老院院长事迹材料
2014/05/21 职场文书
十周年庆典策划方案
2014/06/03 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
Java实现多文件上传功能
2021/06/30 Java/Android
如何利用golang运用mysql数据库
2022/03/13 Golang
使用Redis做预定库存缓存功能
2022/04/02 Redis