【问题标题】:php array and foreach?php数组和foreach?
【发布时间】:2010-11-13 22:02:08
【问题描述】:

下面是我正在尝试开始工作的代码,但我对数组和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>

【问题讨论】:

    标签: php arrays loops for-loop


    【解决方案1】:
    foreach ($countries as $key => $country) {
        $selected = ""
        if ($key == $mycountry) $selected = ' selected="selected" ';
        print '<option value=' . $key . $selected . '>' . $country . '</option>';
    }
    

    基本上,对于数组中的每个元素,您都将其分解为其键和值(即 $countreis[key] = value)。一旦您了解数组(它们可能会非常混乱),它将使编码变得容易一百万倍。

    (由于某种原因,语法高亮/格式化在我的代码中不起作用...)

    【讨论】:

    • option value 属性在此示例中可以使用一些引号。
    【解决方案2】:

    我猜你在找:

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

    至于确保美国和英国位于顶部,请确保这两个位于您的阵列顶部(这将是最简单的)。

    【讨论】:

    • 谢谢我喜欢更短的代码,但是有一个语法错误,我真的不知道如何在速记方法中很好地执行 if/else
    • 你能帮我让这条线正常工作吗,我无法摆脱语法错误 echo '';
    【解决方案3】:

    您应该将 US 和 UK 放在数组的顶部,然后使用类似:

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

    你应该使用 selected="selected" 而不是 SELECTED

    【讨论】:

    • 老兄,这会将“选定”添加到列表中的每个项。
    • 你说得对,并没有真正考虑过。我更新了代码。
    • 伙计,$row 是一个整数,它怎么会等于 'usa'?
    • 视情况而定,我只是举个例子。 $arr = new array('usa'=>'美国','uk'=>'英国');当您想打印带有国家/地区代码的国家/地区时,通常会使用关联数组。
    猜你喜欢
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多