2009-07-24 80 views
1

下面是我的代码,我试图去工作,但我真的有很少的知识阵列和foreach。因此,它不能正常工作php数组和foreach?

我需要出示dropdown选择的形式与数组的内容浏览器

我还需要有选择的项目如果==至$ mycountry 最后,我想表明美国和英国在我的列表的顶部

谁能告诉我,我该怎么办人这个

<?PHP 
$countries = array(
"217" => "Turkenistan", 
"218" => "Turks and Caicos Islands", 
"219" => "Tuvalu", 
"220" => "Uganda", 
"221" => "Ukraine", 
"222" => "United Arab Emirates", 
"223" => "United Kingdom (Great Britain)", 
"224" => "United States"); 


$mycountry = 224; 
?> 

<select name="country" style="width:180px;" onChange="do_get_rest_popup(this.value)" /> 
<?php 
$countryCounter = 1; 
$amtOfCountries = count($countries); 
//foreach ($country as $id => $c) { 
for($_top=0; $_top < $amtOfCountries; $_top++){ 
    if ($countryCounter == $amtOfCountries) { 
     echo "<option value=\"$countries[0]\" SELECTED>$countries[1]</option>"; 
    } else { 
     echo "<option value=\"$countries[0]\">$countries[1]</option>"; 
     $countryCounter++; 
    } 
} 
?> 
</select> 

回答

5
foreach ($countries as $key => $country) { 
    $selected = "" 
    if ($key == $mycountry) $selected = ' selected="selected" '; 
    print '<option value=' . $key . $selected . '>' . $country . '</option>'; 
} 

基本上,对于数组中的每个元素,您都将其分解为其键和值(即$ countreis [key] = value)。一旦你对阵列感到头疼(并且它们可能非常混乱),它将使编码变得更容易。

(出于某种原因,语法高亮/格式是不是在我的代码工作...)

-1

你应该把美国和英国在你的阵列的顶部和然后使用类似于:

foreach($countries as $row => $value) { 
    echo "<option value=\"$row\"" + ($row == 'usa' ? 'SELECTED') + ">$value</option>"; 
} 

,你应该使用选定=“选择”,而不是SELECTED

+0

伙计,这将增加“选择”列表中的每一个* *的项目。 – Christian 2009-07-24 23:36:49

+0

你是对的,没有真正想过。 我更新了代码。 – Dennis 2009-07-24 23:40:56

+2

Man,$ row是一个整数,它将如何等于'usa'? – Christian 2009-07-24 23:42:14

1

我要去猜你正在寻找:

foreach($countries as $id => $country) { 
    echo '<option value="$id"' . ($mycountry==$id?'selected="selected"':'') . '>' . $country . '</option>'; 
} 

对于确保美国和英国是最重要的,确保那些2位于阵列之上(这将是最容易的)。