【问题标题】:Need to perform an if statement inside a php foreach loop需要在 php foreach 循环中执行 if 语句
【发布时间】:2014-07-02 02:43:13
【问题描述】:

我正在使用 Filemaker API——它类似于 sql——基本上是从字段和列表中提取数据。

我正在尝试在我的 foreach 循环中设置一个 if 语句,以便它将标签 selected="selected" 添加到我的 html 中的选择选项

这是代码

<?php

$layout =& $fm->getLayout('Leads');

$values = $layout->getValueList('LeadStatus');

$list_menu = '<select name="LeadDocStatusSelect">';



foreach ($values as $value) 
    {
    $list_menu .='<option value="' . $value . '">' . $value . '</option>' ;
    }


$list_menu .= '</select>';
echo $list_menu;
?>

如何在 foreach 循环中添加这样的 if 语句?

if ($businessJudgements == 'No') {
    echo 'checked="checked"';
} else {
    echo '';
}

【问题讨论】:

    标签: php if-statement foreach


    【解决方案1】:

    foreach 循环的主体只是一个语句块,因此您可以根据需要放入任意数量的语句,例如:

    foreach ($values as $value) {
        $list_menu .='<option value="' . $value . '">' . $value . '</option>';
        if ($businessJudgements == 'No') {
            echo 'checked="checked"';
        } else {
            echo '';
        }
    }
    

    但是,您确定option 标记的属性正确吗?如果您打算选择特定选项,checked 不是正确的方法(它适用于复选框输入字段)。 selected 属性是 HTML option 标记的正确属性。

    所以你最好用类似的东西:

    # The default is orange.
    
    $default_value = "orange";
    
    # Process every option.
    
    foreach ($values as $value) {
        # Add [<option value="X"].
    
        $list_menu .= '<option value="' . $value . '"';
    
        # Add [ selected] ONLY for default one.
    
        if ($value == $default_value) {
            $list_menu .= ' selected';
        }
    
        # Add [>X</option>].
    
        $list_menu .= '>' . $value . '</option>';
    }
    

    这将根据需要为您提供option 标签,但值与默认值匹配的标签也将附加selected 属性。

    假设$values 持有数组{"red", "black", "orange", "yellow"},你最终会得到(为了回答的目的,这里的格式很好):

    <option value="red">             red    </option>
    <option value="black">           black  </option>
    <option value="orange" selected> orange </option>
    <option value="yellow">          yellow </option>
    

    【讨论】:

    • 该;允许我将 if 语句添加到变量中吗?
    • @user3795995,您没有将if 语句添加到变量。而是在foreach 中运行if 以稍微修改您正在构建的列表菜单。请参阅我的第二个代码段以了解执行此操作的一种方法。
    • 啊这有道理!我确实知道 selected 是正确的属性。是否需要'Selected ="Selected"'?
    • @user3795995,不适用于 HTML,仅 selected 就可以了。 XHTML 禁止最小化,所以 that 需要selected="selected".
    【解决方案2】:

    我假设你已经知道如何获得你的 $businessJudgement ,所以代码应该是这样的

    <?php
    
    $layout =& $fm->getLayout('Leads');
    
    $values = $layout->getValueList('LeadStatus');
    
    $list_menu = '<select name="LeadDocStatusSelect">';
    
    
    
    foreach ($values as $value) 
        {
    
    
        if ($businessJudgements == 'No') {
         $list_menu .='<option value="' . $value . '">' . $value . '</option>' ;
    } else {
         $list_menu .='<option value="' . $value . '" selected >' . $value . '</option>' ;
    }
    
    
        }
    
    
    $list_menu .= '</select>';
    echo $list_menu;
    ?>
    

    【讨论】:

    • 就代码而言,在循环中使用echo 会适得其反。编辑:现在好多了。
    猜你喜欢
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多