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);