• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
小屌丝
博客园    首页    新随笔       管理    订阅  订阅
PHP中数据类型的隐形转换

隐形类型的转换,在PHP中是个很常见的问题,但是又不一定会注意得到.我所知道的情况进行记录下,一遍查阅

1.字符串索引  字符串可以通过 $str[index]访问这是都知道的.但是当index并非规范的数字的时候,就会发送数据类型的隐形转换.   $str['sdfsdf'] => $str[0], $str['3sf']=>$str[3]. 这个时候的转换是 index会转换为整型,值则根据字符串开始的值.

2.数组(这个一般来说不会碰到,但是有看到这个也就记上了)

<?php
function testArr($param) {
    var_dump($param['abc']);
}
testArr(false); // NULL
testArr(123); // NULL
testArr(123.456); // NULL
testArr('string'); // string(1) "s"
testArr(array('abc'=>'text'));  // string(4) text
testArr(new ArrayObject()); // Notice: undefined index: abc
?>

这种一般都不会出现的吧....

情况最多的是 字符串和数字进行比较时,是将string类型转换为number类型在进行比较

所有

$a = 'a';

$b = 0;

$a == $b; //return true;

$a === $b; //return false,会进行类型的判断

数组函数in_array();bool in_array ( mixed $needle , array $haystack [, bool $strict ] )以前一直没注意第三个参数.

var_dump(in_array(0, array('s')));  // true  

让一个不指定第三个参数,字符’s'也会转换为整形0,返回true

posted on 2014-03-04 12:40  小屌丝  阅读(487)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3