Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php选项值_Php_Select_Option - Fatal编程技术网

Php选项值

Php选项值,php,select,option,Php,Select,Option,我有一个1000+区域的列表,我想知道是否有一种方法可以通过代码而不是重复每个值来更轻松地实现这一点 <select> <option value="apple" <?php if ($user_data["$area"] == apple){echo 'selected';} ?>>Apple </option> <option value="lemon" <?php if ($user_data["$area"] == lemo

我有一个1000+区域的列表,我想知道是否有一种方法可以通过代码而不是重复每个值来更轻松地实现这一点

<select>
<option value="apple" <?php if ($user_data["$area"] == apple){echo 'selected';} ?>>Apple
</option> 

<option value="lemon" <?php if ($user_data["$area"] == lemon){echo 'selected';} ?>>Lemon
</option> 

<option value="orange" <?php if ($user_data["$area"] == orange){echo 'selected';} ?>>Orange
</option> 

<option value="banana" <?php if ($user_data["$area"] == banana){echo 'selected';} ?>>Banana
</option>
</select>
也就是说,每个选项都有相同的php代码,而不是每次都必须键入值的名称

<?php if ($user_data["$area"] == option VALUE){echo 'selected';} ?>
你能提供一些代码或想法,看看在教程,我不知道如何开始。谢谢大家!

使用数组:

$areas = array(
    'apple' => 'Apple',
    'lemon' => 'Lemon',
    'orange' => 'Orange',
    'banana' => 'Banana'
);
然后使用该数组打印选择:

<select>
<?php foreach ($areas as $value => $text): ?>
    <option value="<?php echo $value; ?>" <?php if ($user_data[$area] == $value) {echo 'selected';} ?>><?php echo $text; ?>
    </option> 
<?php endforeach; ?>
</select>

我使用关联数组是因为我假设您希望能够自定义区域的文本标签,并且它们不仅是用于匹配用户数据的值的大写版本。

所有解决方案看起来都不错。。。不过,还有一种方法:

//pseudo
$arr = array("apple", "lemon", "orange", ...);
foreach($arr as $value) {
    echo '<option value="'.$value;
    if($user_data[$area] === $value) {
        echo 'selected';
    }
    //echo {the end of your option field syntax}
}
<select>
<?php
  $areas = array('apple', 'lemon', 'orange', 'banana');
  $areas_count = count($areas);
  for ($i = 0; $i < $areas_count; $i++) {
    echo '<option value="' . $areas[$i] . '"';
    echo ($user_data[$area] == $areas[$i]) ? ' selected' : '';
    echo '>' . ucwords($areas[$i]) . '</option>';
  }
?>
</select>

可能是一个for循环,它在要呈现的编译元素数组上进行迭代?尝试将所有选项值编译成一维数组,并使用for循环将每个值写入屏幕。下面的示例(我的除外)将显示与您现在手动编写的内容相同的内容。这是一个不错的选项,但我认为最好不要将$area括在引号中$user_data[$area]还可以,甚至可能比$user_data[$area]更好。在一个字符串中添加多个变量时,使用双引号中的变量最好只用于提高可读性,在这种情况下使用它是没有意义的。是的,我只是从问题中复制了代码。。。该评论应针对OP;谢谢你,我会努力的that@SirDarius啊,我甚至没有注意到OP的$area用引号括起来。对不起Pmy select名称是FROUT,所以当我使用echo$\u POST['FROUT']时,我有例如'apple',但我怎么能有'apple'?谢谢
foreach ($areas as $key => $val)
{
    $select.= '<option '; // opening the option tag
    foreach ($selected_from_db as $keyselected => $valselected)
    {
      $val_fetch_from_array = $valselected == $val['campaignid'] ? 'selected' : '';
      $select.= $val_fetch_from_array; // codes for selecting multiple values
    }
    $select.= ' value = "' . $val['campaignid'] . '">#' . $val['campaignid'] . '-' . $val['campaignname'] . '</option>'; // closing the option tag
}