我正在使用foreach循环创建一个选择表单,如下所示:
$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');
最好的方法是在php中的一个数组中定义您的选项,并将该数组显示为页面中的选项。
使用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);
首先,您破坏了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);