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 页面执行时间计算代码
Dec 04 PHP
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
php使用curl模拟登录后采集页面的例子
Nov 04 PHP
PHP框架Swoole定时器Timer特性分析
Aug 19 PHP
phpmyadmin中禁止外网使用的方法
Nov 04 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
php 无限级分类 获取顶级分类ID
Mar 13 PHP
PHP中的函数声明与使用详解
May 27 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
PHP网页安全认证的实例详解
Sep 28 PHP
PHP利用DWZ.CN服务生成短网址
Aug 11 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
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
JQuery从头学起第一讲
2010/07/04 Javascript
jquery下利用jsonp跨域访问实现方法
2010/07/29 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
python修改list中所有元素类型的三种方法
2018/04/09 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
python中的常量和变量代码详解
2018/07/25 Python
Python Requests库基本用法示例
2018/08/20 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
python 项目目录结构设置
2020/02/14 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
机械设计毕业生自荐信
2014/02/02 职场文书
抄作业检讨书
2014/02/17 职场文书
搞笑创意广告语
2014/03/17 职场文书
岗位工作说明书
2014/07/29 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
负责培养人意见
2015/06/05 职场文书
幼儿园老师新年寄语
2015/08/17 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android
分享几种python 变量合并方法
2022/03/20 Python