You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用echo输出二维数组提示Uninitialized string offset报错如何解决

报错含义

Uninitialized string offset 2 表示你尝试访问字符串的第2位下标,但该字符串长度不够,不存在对应位置的字符。

问题出在数组取值语法

你定义的$ttt是二维数组,但你写的$ttt[0][1][2]是三维数组的取值写法,实际执行时会按以下逻辑解析:

  • 第一层$ttt[0]取到第一个子数组:['x', '', 'o']
  • 第二层$ttt[0][1]取到该子数组下标为1的元素,也就是空字符串''
  • 第三层[2]会让PHP把前面的空字符串当做字符序列尝试取下标2,空字符串没有对应位置,自然触发报错。

另外你代码里的$lang变量如果没有提前定义赋值,也会触发未定义变量的警告。

解决方法

单个元素取值

二维数组只需要写两层下标即可,下标从0开始计数,例如:

  • 取第一行第三列的o:echo $ttt[0][2];
  • 取第二行第二列的o:echo $ttt[1][1];
  • 取第三行第一列的x:echo $ttt[2][0];

输出完整井字棋棋盘

可以用双层循环遍历整个二维数组:

<?php
$ttt = array(
    array('x', '', 'o'),
    array('o', 'o', ''),
    array('x', 'o', '')
);
foreach ($ttt as $row) {
    foreach ($row as $cell) {
        // 空位置用下划线占位,你也可以换成其他字符
        echo $cell ? $cell : '_';
    }
    // 每行结束换行,网页输出用<br>,CLI输出用PHP_EOL
    echo "<br>";
}
?>

内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:45:01