如何在PHP中为其他字段获取特定的选择选项值


How do you get a specific select option value in PHP for other field

我已经得到了这行允许用户输入状态的代码;

<input id="location-state" type="text" maxlength="2" name="location_state" value="<?php echo esc_attr($EM_Location->location_state, ENT_QUOTES); ?>" />

但是,我想把它变成一个下拉选择。现在我想到的一种方法是使用php获取选择选项值并将其添加到上述输入中,然后将输入隐藏起来,不让用户看到它。

不知道从哪里开始,我试着做以下测试,但没有工作;

<select>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AL'); ?>">Alabama</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AK'); ?>">Alaska</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AZ'); ?>AZ">Arizona</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AR'); ?>AR">Arkansas</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'CA'); ?>CA">California</option>
</select>

它确实有效,但只适用于阿拉巴马州…

$values = array(
    'AL' => 'Alabama',
    'AK' => 'Alaska',
    'AZ' => 'Arizona'
    ...
);

echo '<select id="location-state" name="location_state">';
foreach( $values as $key => $value )
{
    $selected = $key == $EM_Location->location_state ? 'selected="selected"' : '';
    echo '<option value="'.$key.'" '.$selected.'>'.$value.'</option>';
}
echo '</select>';

您需要删除输入标记,并为select标记提供与输入相同的属性名称。删除:

<input id="location-state" type="text" maxlength="2" name="location_state" value="<?php echo esc_attr($EM_Location->location_state, ENT_QUOTES); ?>" />

并加上:

<select name="location_state">
<option value="<?php echo esc_attr($EM_Location->location_state, 'AL'); ?>">Alabama</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AK'); ?>">Alaska</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AZ'); ?>AZ">Arizona</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AR'); ?>AR">Arkansas</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'CA'); ?>CA">California</option>
</select>