将数组转换为xhtml选择列表

时间:2011-04-18 14:59:34

标签: php arrays

我有一个数组:

$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>

7 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

您想要使用稍微不同的foreach形式

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

使用此功能,您可以同时获取每个选项的键(左侧)和值(右侧)。

答案 2 :(得分: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;

答案 3 :(得分: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>

答案 4 :(得分:0)

你的代码缺少一个名为$ value的变量,而“100%Default”需要一个值(比如0 OR null,只是为了填充空格)但是你可以遍历你的数组并得到值和选项文本,如此:

<select>
<?php
foreach($my_fontSizes as $value => $key)
{
?>
<option value="<?php echo $value; ?>"><?php echo $key; ?></option>
<?php
}
?>
</select>

答案 5 :(得分: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>

稍微清理一下标记(但与其他人一样的答案)

答案 6 :(得分:0)

您可以使用array_keys()并通过键来打印选项值。