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 相关文章推荐
.htaccess文件保护实例讲解
Feb 06 PHP
PHP 八种基本的数据类型小结
Jun 01 PHP
php操作JSON格式数据的实现代码
Dec 24 PHP
php jsonp单引号转义
Nov 23 PHP
php opendir()列出目录下所有文件的实例代码
Oct 02 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 PHP
PHP提取字符串中的手机号正则表达式怎么写
Jul 17 PHP
Joomla框架实现字符串截取的方法示例
Jul 18 PHP
PHP date()格式MySQL中插入datetime方法
Jan 29 PHP
php+Ajax无刷新验证用户名操作实例详解
Mar 04 PHP
使用PHP反射机制来构造&quot;CREATE TABLE&quot;的sql语句
Mar 21 PHP
PHP实现简单的协程任务调度demo示例
Feb 01 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的日期与时间函数技巧
2008/04/24 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
PHP+APACHE实现网址伪静态
2015/02/22 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
原生js实现给指定元素的后面追加内容
2013/04/10 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
简述vue状态管理模式之vuex
2018/08/29 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
python网络爬虫采集联想词示例
2014/02/11 Python
Python面向对象特殊成员
2017/04/24 Python
python 全局变量的import机制介绍
2017/09/07 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
python微信撤回监测代码
2019/04/29 Python
Python求离散序列导数的示例
2019/07/10 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
Python如何批量生成和调用变量
2020/11/21 Python
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
考博自荐信
2013/10/25 职场文书
优秀教师先进事迹
2014/01/22 职场文书
中班开学寄语
2014/04/04 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript
Go语言基础函数基本用法及示例详解
2021/11/17 Golang