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与MySQL交互使用详解
Oct 09 PHP
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
服务器web工具 php环境下
Dec 29 PHP
php cc攻击代码与防范方法
Oct 18 PHP
php生成图形验证码几种方法小结
Aug 15 PHP
PHP使用SOAP调用.net的WebService数据
Nov 12 PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 PHP
Web程序工作原理详解
Dec 25 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
Jan 04 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
Jun 22 PHP
PHP递归获取目录内所有文件的实现方法
Nov 01 PHP
wordpress自定义标签云与随机获取标签的方法详解
Mar 22 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实现三级级联下拉框
2016/04/17 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
JQuery实现自定义对话框的代码
2008/06/15 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
javascript实现汉字转拼音代码分享
2015/04/20 Javascript
js 定位到某个锚点的方法
2016/11/19 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
COM组件中调用JavaScript函数详解及实例
2017/02/23 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
vue中的inject学习教程
2019/04/24 Javascript
对vue中的事件穿透与禁止穿透实例详解
2019/10/28 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
Python实现感知机(PLA)算法
2017/12/20 Python
简单了解什么是神经网络
2017/12/23 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
用python制作个音乐下载器
2021/01/30 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
毕业生如何写自荐信
2014/03/26 职场文书
工地安全标语
2014/06/07 职场文书
医德考评自我评价
2014/09/14 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
2014年技术员工作总结
2014/11/18 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
六一儿童节园长致辞
2015/07/31 职场文书
MySQL基础(二)
2021/04/05 MySQL
python numpy中setdiff1d的用法说明
2021/04/22 Python
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js