PHP弱类型语言中类型判断操作实例详解

 更新时间:2017年08月10日 11:32:12   作者:kangjianrong  
这篇文章主要介绍了PHP弱类型语言中类型判断操作,结合实例形式分析了php中针对数据类型的转换、判断及函数使用技巧与注意事项,需要的朋友可以参考下

本文实例讲述了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基本语法入门教程》、《php字符串(string)用法总结》及《PHP数组(Array)操作技巧大全

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • php中$_POST与php://input的区别实例分析

    php中$_POST与php://input的区别实例分析

    这篇文章主要介绍了php中$_POST与php://input的区别,实例分析了$_POST与php://input的功能、使用技巧与用法区别,需要的朋友可以参考下
    2015-01-01
  • 深入PHP内存相关的功能特性详解

    深入PHP内存相关的功能特性详解

    本篇文章是对PHP中内存相关的功能特性进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php下批量挂马和批量清马代码

    php下批量挂马和批量清马代码

    批量挂马和批量清马程序PHP版,所以黑客工具的对立性,在黑客手里是破坏工具,在维护的站长来说是修正工具。
    2011-02-02
  • PHP+redis实现的悲观锁机制示例

    PHP+redis实现的悲观锁机制示例

    这篇文章主要介绍了PHP+redis实现的悲观锁机制,简单介绍了redis锁机制与乐观锁、悲观锁等概念,并结合实例形式分析了php+redis实现悲观锁相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • PHP对象Object的概念 介绍

    PHP对象Object的概念 介绍

    类提供了一个基础,可以在此基础上创建实体(即这个类所建模的实体)的特定实例,这些特定实例称为对象(object)
    2012-06-06
  • php CI框架插入一条或多条sql记录示例

    php CI框架插入一条或多条sql记录示例

    本节主要为大家介绍了php CI框架如何插入一条或多条sql记录,示例代码如下,不了解的朋友不要错过
    2014-07-07
  • 优化WordPress中文章与评论的时间显示

    优化WordPress中文章与评论的时间显示

    这篇文章主要介绍了优化WordPress中文章与评论的时间显示的方法,文中讲解了设置相对时间内显示xxx时间以前及相对时间外显示具体时间的方法,需要的朋友可以参考下
    2016-01-01
  • PHP实现的加密解密处理类

    PHP实现的加密解密处理类

    这篇文章主要介绍了PHP实现的加密解密处理类,结合实例形式分析了php加密解密类的定义与使用技巧,需要的朋友可以参考下
    2016-05-05
  • PHP中函数rand和mt_rand的区别比较

    PHP中函数rand和mt_rand的区别比较

    mt_rand() 比rand() 快四倍,很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。
    2012-12-12
  • PHP实现采集抓取淘宝网单个商品信息

    PHP实现采集抓取淘宝网单个商品信息

    这篇文章主要介绍了PHP实现采集抓取淘宝网单个商品信息,本文是一种实现思路,使用file_get_contents函数实现,并给出了采集正则,需要的朋友可以参考下
    2015-01-01

最新评论