Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由php生成的optgroup_Php_Html_Optgroup - Fatal编程技术网

由php生成的optgroup

由php生成的optgroup,php,html,optgroup,Php,Html,Optgroup,我试图用PHP从数组生成optgroup和options,它生成了它,但我的optgroup是错误的。它只显示第一个单词。在页面源代码中,它是正确的 $my_array = array( first optgroup => array( key1 =>value1, key2 => value2, key3 => value3, ), second optgroup => array(

我试图用PHP从数组生成optgroup和options,它生成了它,但我的optgroup是错误的。它只显示第一个单词。在页面源代码中,它是正确的

$my_array = array(
    first optgroup => array(
        key1 =>value1,
        key2 => value2,
        key3 => value3,
    ),
    second optgroup => array(
        key1 =>value1,
        key2 => value2,
        key3 => value3,
    ),
);
foreach ($my_array as $optgroup => $other_array) {
    echo "<optgroup label=". $optgroup . ">";

    foreach ($other_array as $key => $value) {
        echo "<option value=" . $key . ">" . $value . "</option>";
}
    echo "</optgroup>";

in the source code is fine:

<optgroup label=first optgroup>
    <option value=key1>value1</option>
    <option value=key2>value2</option> 
    .......
$my_array=array(
第一个optgroup=>array(
键1=>value1,
键2=>value2,
键3=>value3,
),
第二个optgroup=>array(
键1=>value1,
键2=>value2,
键3=>value3,
),
);
foreach($optgroup=>$other\u数组形式的my\u数组){
回声“;
foreach($key=>$value的其他数组){
回显“$value.”;
}
回声“;
在源代码中:
价值1
价值2
.......
但是在我的选择框中,我只看到“first”,而不是“first optgroup”


有什么想法吗?谢谢!!

您需要嵌入一些引号:

echo "<optgroup label=\"{$optgroup}\">";
                      ^^-----------^^----
echo”“;
^^-----------^^----
注意,反斜杠在嵌入的引号上转义。这将生成

<optgroup label="foo bar">

而不是

<optgroup label=foo bar> 
                ^^^--- value for "label" attribute
                    ^^^---unknown random attribute

^^^---“标签”属性的值
^^^---未知随机属性
你现在正在做

试试这个

$my_array = array(
    'first optgroup' => array(
        'key1' =>'value1',
        'key2' => 'value2',
        'key3' => 'value3',
    ),
    'second optgroup '=> array(
        'key1' =>'value1',
        'key2' => 'value2',
        'key3' => 'value3',
    ),
);

echo "<select>";
foreach ($my_array as $optgroup => $other_array) {
    echo "<optgroup label=". $optgroup . ">";
    foreach ($other_array as $key => $value) 
        echo "<option value=" . $key . ">" . $value . "</option>";
}
    echo "</optgroup>";
});
echo "</select>";
$my_array=array(
'first optgroup'=>数组(
'key1'=>'value1',
'key2'=>'value2',
'键3'=>'值3',
),
'第二个optgroup'=>数组(
'key1'=>'value1',
'key2'=>'value2',
'键3'=>'值3',
),
);
回声“;
foreach($optgroup=>$other\u数组形式的my\u数组){
回声“;
foreach($key=>$value的其他数组)
回显“$value.”;
}
回声“;
});
回声“;

性能更好的选项是
echo´
如果使用
而不是串接字符串的微小节约可以拯救你的系统,那么你正在进行facebook规模的操作,不应该在这个网站上问这样简单的问题。请指出。应您的要求,我可以删除该评论。facebook就是一个可怕的例子,因为他们的表现相当可疑。。。这个网站就像慢动作的蜗牛赛跑一样慢。