关于PHP字符与数组的疑义

WBOY
发布: 2016-06-13 13:00:21
原创
836 人浏览过

关于PHP字符与数组的疑问
$str="123456";
var_dump($str["abc"]);

为什么结果是第一个字符而不是null 而且我unset($str["abc"])又提示没这个下标。
------解决方案--------------------
字符串不是数组,只有位置,没有下标和关联键
数组相关函数不能用于字符串

因此 $str["abc"] 中的 "abc" 被转换成数值 0
对于 $str="123456"; 而言 $str["abc"] 就是 $str[0],所以得到 1

虽然访问字符串的某个位置可以写作 $str[$i]
但是为防止歧义,php 建议你这么写 $str{$i}
------解决方案--------------------
手册 比较运算符 一节
------------------------------------------
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("1" == "1e0"); // 1 == 1 -> true
switch ("a") {
case 0:
    echo "0";
    break;
case "a": // never reached because "a" is already matched with 0
    echo "a";
    break;
}
?> 
------------------------
switch那个例子就很明显了

字符串索引不能用“字符串”,但php把它“智能”地处理了变成0

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板