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 相关文章推荐
弄了个检测传输的参数是否为数字的Function
Dec 06 PHP
PHP类中Static方法效率测试代码
Oct 17 PHP
PHP+shell实现多线程的方法
Jul 01 PHP
php获取英文姓名首字母的方法
Jul 13 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
Mar 28 PHP
PHP使用GD库输出汉字的方法【测试可用】
Nov 10 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
Nov 23 PHP
PHP中常用的魔术方法
Apr 28 PHP
基于PHP实现的多元线性回归模拟曲线算法
Jan 30 PHP
启用OPCache提高PHP程序性能的方法
Mar 21 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
Feb 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编程开发“虚拟域名”系统
2006/10/09 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
js操作iframe父子窗体示例
2014/05/22 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
Python第三方库的安装方法总结
2016/06/06 Python
深入浅出学习python装饰器
2017/09/29 Python
matplotlib绘制动画代码示例
2018/01/02 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
西班牙Polo衫品牌:Polo Club
2020/08/09 全球购物
护理专业推荐信
2013/11/07 职场文书
法律专业推荐信范文
2013/11/29 职场文书
运动会广播稿150字
2014/02/19 职场文书
建筑管理专业求职信
2014/07/28 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
建党伟业电影观后感
2015/06/01 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers