我正在尝试使用从循环中的数据库中抓取的嵌套php数组来创建一堆html元素。
下面是该代码的清理部分,其中仍然包含奇怪的错误:可以正确使用非嵌套数组,如下面的代码所示:
<?php
$array = array();
$array[] = "a";
$array[] = "b";
$array[] = "c";
$x = 1;
echo "<input type='radio' value=\" $array[$x] \" id='$x'> <label for=\" $array[$x] \">" . $array[$x] . "</label><br>";
?>
但是当数组嵌套时不是这样的:
<?php
$subarray = array();
$subarray[] = "a";
$subarray[] = "b";
$subarray[] = "c";
$array = array();
$array[] = $subarray;
$subarray[] = "p";
$subarray[] = "q";
$subarray[] = "r";
$array[] = $subarray;
$x = 1;
echo "<input type='radio' value=\" $array[$x][$] \" id='$x'> <label for=\" $array[$x][1] \">" . $array[$x][1] . "</label><br>";
?>
由于一些奇怪的原因,“$ array [$ x] [$ x]”和“$ array [$ x] [1]”只能在“&lt;&gt;” - 标签之外工作并带来“b”存储在[1] [1]的数组中。但在“&lt;&gt;” - 标签内,它们仅在检查器中显示为“Array [1]”。 “$ x”在“&lt;&gt;” - 标记内正常工作。
我可以做些什么来完成这项工作?
谢谢!
答案 0 :(得分:1)
PHP的解析器对于数组来说并不“贪婪”:
$foo = array();
$foo[1] = array();
$foo[1][2] = 'bar';
echo "$foo"; // Output: Array
echo "$foo[1]" // Output: Array
echo "$foo[1][2]"; // Output: Array[2]
对于第二个和后续数组“维度”,您必须使用{}
扩展语法:
echo "{$foo[1][2]}"; // Output: bar
请注意,使用{}
表示法时,必须引用字符串键:
echo "$foo[bar]"; // ok
echo "$foo['bar']"; // causes warning
echo "{$foo['bar']}"; // ok
echo "{$foo[bar]}"; // undefined constant warning