2011-04-18 30 views
1

我有一個數組給出:轉換數組的XHTML選擇列表

$my_fontSizes = array("" => "100% Default", 
         "150%" => "150% of default", 
         "80%" => "80% of default" 
       ); 

當我變成一個選擇列表此,我怎麼指定該選項的「價值」是什麼的=>符號的左側和「文本標籤」是什麼在右邊?

例如,這裏是我使用的是什麼了,但右側的元素=>被設置爲兩個值和標籤:

<select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>"> 
<?php foreach ($value['options'] as $option) { ?> 
    <option<?php if (get_option($value['id']) == $option) { echo ' selected="selected"'; } ?> value='<?php echo $option; ?>'><?php echo $option; ?></option><?php } ?> 
</select> 

回答

3
<?php 
foreach ($array as $key => $value) 
?> 
+0

謝謝格爾本。我很感激幫助。 – 2011-04-18 15:32:32

2

你想用稍有不同的形式的foreach

foreach($array as $key=>$value) 

使用這個,你能抓住這兩個關鍵(左側)和每個選項的值(右側)。

+0

感謝Tau_Zero,感謝您的快速回答。 – 2011-04-18 15:33:11

1

你想用一個稍微不同的foreach循環:

foreach($array as $key=>$value) 

所以,你的代碼是:

<select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>"> 
<?php foreach ($value['options'] as $value $option) { ?> 
    <option<?php if (get_option($value['id']) == $option) { echo ' selected="selected"'; } ?> value='<?php echo $value; ?>'><?php echo $option; ?></option><?php } ?> 
</select> 
0

你的代碼是缺少一個變量名爲$值和「100%默認值」,將需要一個值(比如0或null,只是爲了填充空格),但是您可以遍歷數組並獲取如下所示的值和選項文本:

<select> 
<?php 
foreach($my_fontSizes as $value => $key) 
{ 
?> 
<option value="<?php echo $value; ?>"><?php echo $key; ?></option> 
<?php 
} 
?> 
</select> 
0
<select name="<?=$value['id']?>" id="<?=$value['id']?>"> 
<?php foreach ($value['options'] as $value=>$option) { ?> 
    <option<?=(get_option($value['id']) == $value ? ' selected="selected"' : '')?> value='<?=$value?>'><?=$option?></option> 
<?php } ?> 
</select> 

而且稍微清理標記(但同樣的答案,因爲每個人)

2

首先,不要混合你的PHP和XHTML這樣。這很混亂,很難維護。

其次,請注意您正在打印$option作爲名稱和值。這是我會做的:

$my_fontSizes = array(
        ""  => "100% Default", 
        "150%" => "150% of default", 
        "80%" => "80% of default"); 

$HTML = sprintf('<select name="%s" id="%s">', $Value['id'], $Value['id']); 

foreach ($my_fontSizes as $Key => $Value) 
{ 
    $Selected = ($OtherValue == $Value) ? 'selected="selected"' : ''; 
    $HTML .= sprintf('<option %s value="%s">%s</option>', $Selected, $Key, $Value); 
} 

$HTML .= '</select>'; 

echo $HTML; 
+0

謝謝扎克。我讚賞解釋+1 – 2011-04-18 15:31:54

0

你會使用array_keys()並通過鍵來打印選項值。