PHP弱类型

Posted so7cool

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP弱类型相关的知识,希望对你有一定的参考价值。

0x01 php中的两种比较符号

1 <?php
2 var_dump(‘admin‘==0);               //true
3 var_dump(‘1admin‘==1);             //true
4 var_dump(‘admin1‘==1);           //false
5 var_dump(‘adminm1‘==0);         //true
6 var_dump(0e154 == 0e524);       //false
7 var_dump(0 === ‘abdefg‘);      //true 
8 ?>

当我们使用‘ == ‘进行比较时,会将字符串类型转换成数字型再进行比较,只比较转换后的数值的大小

  a.当字符串中不存在数字的时候会把字符串会转换成数值0,参考第二行代码。

  b.当字符串的开始部分有合法数值时,会把该字符串转换成该合法数值,参考第三行代码。

  c.当字符串存在合法数值时但合法数值不在开始部分,那么字符串仍然会转换成数值0,参考第四和五行代码。

  d.当字符串中包含‘e‘或‘E‘时,系统会将其识别为科学记数法,0^n均为0,参考第六行代码。

当我们使用‘ === ‘进行比较时,会比较较二者的类型和数值。简而言之, ‘===‘ 是一个全等符合,如果$a=== $b ,我们可以判断a和b的数值和类型完全相等。


以上是关于PHP弱类型的主要内容,如果未能解决你的问题,请参考以下文章

php弱类型引发的血案

Natas23 Writeup(php弱类型)

具有严格接口但弱类型的代码的术语

php 弱类型总结

代码审计-弱类型整数大小比较绕过

C语言的结构和联合,以及PHP是怎么实现弱类型的