如何使嵌套的php数组在html属性中工作?

时间:2014-06-26 14:58:47

标签: php html arrays nested

我正在尝试使用从循环中的数据库中抓取的嵌套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;” - 标记内正常工作。

我可以做些什么来完成这项工作?

谢谢!

1 个答案:

答案 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