php状态数组没有显示

时间:2013-12-08 18:39:38

标签: php arrays

下面是我试图用来显示下拉菜单的代码,该菜单允许用户选择他们所处的状态。唯一的问题是下拉列表只显示空白值。列表很长,好像状态在那里,但每个插槽都是空白的?对此的任何帮助都会很棒!

            <div>
        <?php $state_array = array(
'AL'=>'Alabama',
'AK'=>'Alaska',
'AZ'=>'Arizona',
'AR'=>'Arkansas',
'CA'=>'California',
'CO'=>'Colorado',
'CT'=>'Connecticut',
'DE'=>'Delaware',
'DC'=>'District of Columbia',
'FL'=>'Florida',
'GA'=>'Georgia',
'HI'=>'Hawaii',
'ID'=>'Idaho',
'IL'=>'Illinois',
'IN'=>'Indiana',
'IA'=>'Iowa',
'KS'=>'Kansas',
'KY'=>'Kentucky',
'LA'=>'Louisiana',
'ME'=>'Maine',
'MD'=>'Maryland',
'MA'=>'Massachusetts',
'MI'=>'Michigan',
'MN'=>'Minnesota',
'MS'=>'Mississippi',
'MO'=>'Missouri',
'MT'=>'Montana',
'NE'=>'Nebraska',
'NV'=>'Nevada',
'NH'=>'New Hampshire',
'NJ'=>'New Jersey',
'NM'=>'New Mexico',
'NY'=>'New York',
'NC'=>'North Carolina',
'ND'=>'North Dakota',
'OH'=>'Ohio',
'OK'=>'Oklahoma',
'OR'=>'Oregon',
'PA'=>'Pennsylvania',
'RI'=>'Rhode Island',
'SC'=>'South Carolina',
'SD'=>'South Dakota',
'TN'=>'Tennessee',
'TX'=>'Texas',
'UT'=>'Utah',
'VT'=>'Vermont',
'VA'=>'Virginia',
'WA'=>'Washington',
'WV'=>'West Virginia',
'WI'=>'Wisconsin',
'WY'=>'Wyoming',
); ?>
            State: 
            <select id="state" name="state"> 
            <?php for ($i = 0; $i < count($state_array); $i++) {
                if (isset($state)&&$state == $state_array[$i]) {
                    echo "<option value=\"$state_array[$i]\" selected=\"selected\">$state_array[$i]</option>";
                } else {
                    echo "<option value=\"$state_array[$i]\">$state_array[$i]</option>";
                }
            } ?>
            </select>
        </div>

2 个答案:

答案 0 :(得分:3)

您正在使用数字索引来遍历关联数组。您应该使用foreach循环代替for循环:

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

另外:如果我建议您使用error_reporting(E_ALL),那会让您的生活更轻松,并且可以帮助您避免这种错误:)

答案 1 :(得分:1)

阵列中的键是双字母组合“WI / WY”等。您尝试使用数字索引进行循环访问。

您可以将循环更改为:

foreach ($state_array as $short => $state) {
   // $short is WI/WY
   // $state is Wisconsin/Wyoming
}