PHP:ForEach循环中的IF语句应用于后续条目

时间:2016-04-01 12:27:29

标签: php if-statement foreach html-select

我有一个IF语句来检查ForEach循环中的特定字符串,如果存在,则将“selected”添加到<option>输出,以便首先在HTML选择框中显示该条目。但是,当循环到达正确的记录时,它会在每个后续<option>记录中添加“已选择”。

function adminFillOption($options, $input) {
$output = "";
$selected = "";
//iterate through the array
foreach ($options as $value => $desc) {
    if ($input == $desc) {
        $selected = 'selected';
    };
    //Add an option for each elemement of the array to the output
    $desc = htmlspecialchars($desc);
    $output .= "\t\t\t\t\t\t<option value='$desc' $selected >$desc</option>\n";

}//end interation
return $output;
}

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:0)

function adminFillOption($options, $input) {
    $output = "";
    foreach ($options as $value => $desc) {
        //Add an option for each elemement of the array to the output
        $desc = htmlspecialchars($desc);
        $output .= "\t\t\t\t\t\t<option value='$desc'";
        if ($input == $desc) $output .= ' selected';
        $output .= ">$desc</option>\n";
    }//end interation
    return $output;
}

答案 1 :(得分:0)

你从未取消它,所以它为每次迭代设置。

尝试使用三元运算符,在条件未满足时将其设置为空。

$selected = ($input == $desc) ? 'selected' : '';

或者在$selected之前,在循环中声明if,这两种方法都可以。

所以代码会变成:

function adminFillOption($options, $input) {
$output = "";
//iterate through the array
foreach ($options as $value => $desc) {
    $selected = ($input == $desc) ? 'selected' : '';
    //Add an option for each elemement of the array to the output
    $desc = htmlspecialchars($desc);
    $output .= "\t\t\t\t\t\t<option value='$desc' $selected >$desc</option>\n";

}//end interation
return $output;
}

演示:https://eval.in/546236

答案 2 :(得分:0)

因为,您只为$selected分配一次值(当它被选中时)。

在达到所选的一个之后,变量不会被修改。

更改

if ($input == $desc) {
 $selected = 'selected';
};

要:

if ($input == $desc) {
 $selected = 'selected';
}
else {
 $selected = '';
}

或者甚至以下选项更好:

$selected = '';
if ($input == $desc) {
 $selected = 'selected';
}

三元运营商:

$selected = ($input == $desc) ? 'selected' : '';

答案 3 :(得分:0)

    $rootScope.$on('dropDownsSet', function(event, mass) {}

如果这样做,function adminFillOption($options, $input) { $output = ""; // $selected = ""; -----> not here //iterate through the array foreach ($options as $value => $desc) { $selected = ""; // ----> but here if ($input == $desc) { $selected = 'selected'; }; //Add an option for each elemement of the array to the output $desc = htmlspecialchars($desc); $output .= "\t\t\t\t\t\t<option value='$desc' $selected >$desc</option>\n"; }//end interation return $output; } 将始终通过每次迭代重置