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 21 PHP
javascript,php获取函数参数对象的代码
Feb 03 PHP
php设计模式 Decorator(装饰模式)
Jun 26 PHP
php的sprintf函数的用法 控制浮点数格式
Feb 14 PHP
PHP常用函数和常见疑难问题解答
Mar 05 PHP
PHP实现的简单日历类
Nov 29 PHP
PHP数组函数array_multisort()用法实例分析
Apr 02 PHP
浅谈PHP值mysql操作类
Jun 29 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
php封装的单文件(图片)上传类完整实例
Oct 18 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 PHP
在 PHP 和 Laravel 中使用 Traits的方法
Nov 13 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/12/05 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
javascript some()函数用法详解
2014/11/13 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
python集合类型用法分析
2015/04/08 Python
Python中__new__与__init__方法的区别详解
2015/05/04 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
python中time tzset()函数实例用法
2021/02/18 Python
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
夜班门卫岗位职责
2013/12/09 职场文书
销售找工作求职信
2013/12/20 职场文书
商场拾金不昧表扬信
2014/01/13 职场文书
设备收款委托书范本
2014/10/02 职场文书
会议欢迎词范文
2015/01/27 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
Java并发编程必备之Future机制
2021/06/30 Java/Android