我正在使用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');
答案 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);