美文网首页
php字符串与数组的特殊情况

php字符串与数组的特殊情况

作者: fadeqi | 来源:发表于2019-03-14 10:15 被阅读0次

    来看一个有趣的实验


    实验1

      <?php
    $arr = array('a','b','c');
    var_dump(isset($arr[1][0]));
    var_dump($arr[0][0]);
    var_dump($arr[1][0]);
    
    #输出
    bool(true)
    string(1) "a"
    string(1) "b"
    

    没错,$arr命名是一维数组但上面代码却返回true

    原因:

    还记得php中的字符串可以用数组的形式进行读取操作的吗?
    实验2

    $var = 'qwertyui';
    var_dump($var['1']);
    var_dump($var[1]);
    var_dump($var[2]);
    #输出
    string(1) "w"
    string(1) "w"
    string(1) "e"
    

    但值得注意的是,php中字符串的数据结构不是数组,而是提供了一个方便的操作而已
    实验3

    <?php
    $var = 'qwertyui';
    var_dump($var['1']);
    var_dump($var[1]);
    var_dump($var[2]);
    $var[8] = '234';
    var_dump($var); 
    $var[12] = '987';
    var_dump($var);
    
    #输出
    string(1) "w"
    string(1) "w"
    string(1) "e"
    string(9) "qwertyui2"
    string(13) "qwertyui2   9" #2和9之间有三个空格
    

    上面例子中字符串每个字符可以看做是数组的一个元素,数组索引值从0开始;执行到$var[12] = '987' 这段代码时,由于现在的 $var 变成了'qwertyui2',长度为9,及,很明显长度不够12+1=13(索引值从0开始);所以在执行时会将$var[9],$var[10],$var[11]填充为空格,$var[12]时会把字符串'987'的第一个字符设置为值,因此输出为"qwertyui2 9" (2和9之间有三个空格)。

    上面的实验1中

    $arr[0][0]在被php解析的过程是这样的:

    $arr[0] 指向的是字符串 'a' 然后对字符串进行操作 相当于 $str='a'; $str[0]

    相关文章

      网友评论

          本文标题:php字符串与数组的特殊情况

          本文链接:https://www.haomeiwen.com/subject/syctpqtx.html