$str="123456";
var_dump($str["abc"]);为什么结果是第一个字符而不是null 而且我unset($str["abc"])又提示没这个下标。

解决方案 »

  1.   

    返回的是1代表真,说明资源存在,貌似是这样的,看看var_dump的用法
      

  2.   

    字符串不是数组,只有位置,没有下标和关联键
    数组相关函数不能用于字符串因此 $str["abc"] 中的 "abc" 被转换成数值 0
    对于 $str="123456"; 而言 $str["abc"] 就是 $str[0],所以得到 1虽然访问字符串的某个位置可以写作 $str[$i]
    但是为防止歧义,php 建议你这么写 $str{$i}
      

  3.   

    手册 比较运算符 一节
    ------------------------------------------
    <?php
    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