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 相关文章推荐
生成sessionid和随机密码的例子
Oct 09 PHP
php 全局变量范围分析
Aug 07 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 PHP
解决file_get_contents无法请求https连接的方法
Dec 17 PHP
PHP中绘制图像的一些函数总结
Nov 19 PHP
smarty模板引擎之分配数据类型
Mar 30 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
php简单解析mysqli查询结果的方法(2种方法)
Jun 29 PHP
PHP实现统计在线人数功能示例
Oct 15 PHP
php中curl和soap方式请求服务超时问题的解决
Jun 11 PHP
php-fpm中max_children的配置
Mar 15 PHP
详解php中curl返回false的解决办法
Mar 18 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源代码
2006/10/09 PHP
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
选择PHP作为网站开发语言的原因分享
2012/01/03 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
一个网马的tips实现分析
2010/11/28 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
JS弹出窗口的运用与技巧大全
2016/11/01 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
[02:44]2014DOTA2 国际邀请赛中国区预选赛 大神红毯秀
2014/05/25 DOTA
python操作xml文件示例
2014/04/07 Python
Python SQLite3数据库操作类分享
2014/06/10 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
python中enumerate函数用法实例分析
2015/05/20 Python
Python常用算法学习基础教程
2017/04/13 Python
Python 操作MySQL详解及实例
2017/04/30 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
2017/08/24 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
python代码实现猜拳小游戏
2020/11/30 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
业务部门经理岗位职责
2014/02/23 职场文书
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技