将选项值转换为数组

时间:2016-07-21 10:47:39

标签: php arrays html-select

我正在使用foreach循环创建一个select表单,如下所示:

$json = '[{"Name":" Jim", "ID":"23", "Age": "0"},{"Name":" Bob", "ID":"53", "Age": "0"}]';
$decode = json_decode($json, false);

echo'<select>';
foreach($decode as $key) {
   echo '<option value="'.$key->Name.'"></option>';
}
echo'</select>';

这将显示以下HTML:

<select>
   <option value="Jim">
   <option value="Bob">
</select>

我如何创建一个包含所有option值的数组,如下所示:

$array = array('Jim', 'Bob');

3 个答案:

答案 0 :(得分:1)

最好的方法是在数组中定义php中的选项,并在页面中将此数组显示为选项。

答案 1 :(得分:1)

使用loadHTMLFile读取html元素。 将html存储在一个文件中,例如filename.html

内部filename.html

<select>
   <option value="1">
   <option value="Bob">
   <option value="2343">
</select>

并将文件称为

$doc = new DOMDocument();
$doc->loadHTMLFile("filename.html");
//echo $doc->saveHTML();
$elements = $doc->getElementsByTagName('option');
$array = [];
if (!is_null($elements)) {
    //print_r($elements);
    foreach ($elements as $element) {
        // echo "<br/>". $element->nodeName. ": ";
        $array[] = $element->getAttribute('value');
    }
}
print_r($array);

<强>已更新

 $json = '[{"Name":" Jim", "ID":"23", "Age": "0"},{"Name":" Bob", "ID":"53", "Age": "0"}]';
$decode = json_decode($json, false);
$str="";
echo'<select>';
foreach($decode as $key) {
   echo $xml = '<option value="'.$key->Name.'"></option>';
   $str.=$xml;
}
echo'</select>';

$doc = new DOMDocument();
$doc->loadHTML($str);
//echo $doc->saveHTML();
$elements = $doc->getElementsByTagName('option');
$array = [];
if (!is_null($elements)) {
    //print_r($elements);
    foreach ($elements as $element) {
        // echo "<br/>". $element->nodeName. ": ";
        $array[] = $element->getAttribute('value');
    }
}
print_r($array);

答案 2 :(得分:0)

首先,您破坏了HTML字符串:</option>每个都有<option>个标记吗?

如果您有:

,请尝试此操作
<?php
$xml = '<select>
   <option value="1"></option>
   <option value="Bob"></option>
   <option value="2343"></option>
</select>';

$dom = new DOMDocument;

$dom->loadXML($xml);

$values = array();

foreach ($dom->getElementsByTagName('option') as $option) {
  $values[] = $option->getAttribute('value');
}

print_r($values);