php中的分析器错误?可以';t嵌套数组索引(访问数组中的一个值以查找另一个数组),而不需要拼凑额外的代码


Parser error in php? Can't nest array indexing (accessing a value in an array to look up another array) without kludging extra code

while($assocArray = mysql_fetch_assoc($result))
{
    for ($j = 0; $j < $length; $j++)
    {
        $column = $fields[$j];                      // + works
        echo "$assocArray[$column]          ";      // +
        //echo "$assocArray[ $fields[$j] ]      ";  // - doesn't work, should be same
    }
echo "<br/>";
}

据报道,数字数组也出现了类似的问题,据说已经解决了。我使用的是一个非常新的PHP构建(5.3.6(,所以它一定是一个单独的bug。生成分析错误。

试试这个:

echo "$assocArray[{$fields[$j]}]";

注意其中额外的{}。PHP的解析器通常"不贪婪",并且会比大多数其他脚本语言更早地停止解析变量。这在多维数组上尤其明显:

$arr[1] = array();
$arr[1][2] = "Hi there"
echo "$arr[1][2]";  // actually outputs "Array[2]" instead of "Hi There"
echo "{$arr[1][2]}"; // outputs 'Hi There' as expected

用大括号包围整个表达式:

echo "{$assocArray[ $fields[$j] ]}      ";

仅供参考:这在一定程度上是一个品味问题,但就我个人而言,我更喜欢而不是内联数组,尤其是嵌套数组。这不是更好吗?

echo $assocArray[ $fields[$j] ] . "      ";
echo $assocArray[ $fields[$j] ];

如果你真的需要尾部空白,可以附加一些类似的东西

str_repeat(' ', 5);