doyp9057 2009-12-09 13:41
浏览 165
已采纳

不能在php中使用字符串偏移量作为数组

I'm trying to simulate this error with a sample php code but haven't been successful. Any help would be great.

"Cannot use string offset as an array"

  • 写回答

9条回答 默认 最新

  • dtoaillwk759656786 2009-12-09 13:42
    关注

    For PHP4

    ...this reproduced the error:

    $foo    = 'bar';
    $foo[0] = 'bar';
    

    For PHP5

    ...this reproduced the error:

    $foo = 'bar';
    
    if (is_array($foo['bar']))
        echo 'bar-array';
    if (is_array($foo['bar']['foo']))
        echo 'bar-foo-array';
    if (is_array($foo['bar']['foo']['bar']))
        echo 'bar-foo-bar-array';
    

    (From bugs.php.net actually)

    Edit,

    so why doesn't the error appear in the first if condition even though it is a string.

    Because PHP is a very forgiving programming language, I'd guess. I'll illustrate with code of what I think is going on:

    $foo = 'bar';
    // $foo is now equal to "bar"
    
    $foo['bar'] = 'foo';
    // $foo['bar'] doesn't exists - use first index instead (0)
    // $foo['bar'] is equal to using $foo[0]
    // $foo['bar'] points to a character so the string "foo" won't fit
    // $foo['bar'] will instead be set to the first index
    // of the string/array "foo", i.e 'f'
    
    echo $foo['bar'];
    // output will be "f"
    
    echo $foo;
    // output will be "far"
    
    echo $foo['bar']['bar'];
    // $foo['bar'][0] is equal calling to $foo['bar']['bar']
    // $foo['bar'] points to a character
    // characters can not be represented as an array,
    // so we cannot reach anything at position 0 of a character
    // --> fatal error
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀