2016-07-21 2 views
0

я создаю избранную форму с помощью цикла Еогеаспа, как показано ниже:Включите значение параметра в массив

$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'); 
+2

Использование DomDocument для разбора HTML – splash58

+0

Почему не '$ массив [] = $ кнопочная> Name;'? – splash58

+0

@ splash58 внутри цикла? –

ответ

1

Самый лучший способ, чтобы определить свои возможности в PHP в массиве и отобразить этот массив в качестве опции на вашей странице.

+0

Я надеялся не делать этого. Разве нет пути? –

+0

@TheCodesee DID ЭТОТ выберет поле, которое будет отправлено в какой-либо форме, или вы хотите его на той же странице? –

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); 
+0

Привет, пожалуйста, взгляните на мое сообщение для обновления. Я добавил дополнительную информацию –

+0

Тот же подход, но используйте http://php.net/manual/en/domdocument.loadhtmlfile.php для вашего обновленного кода! – Saty

+0

Что делать, если я хотел запустить код на той же странице, что и HTML? –

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); 
+0

Документы: http://php.net/manual/ru/class.domdocument.php – doubleui

+0

Попробуйте скопировать мой код для удаления нового файла и запуска 'php yourfile.php'. У меня есть 3 значения в массиве. – doubleui

+0

Привет, пожалуйста, взгляните на мое сообщение для обновления. Я добавил дополнительную информацию. –

Смежные вопросы