检查foreach中的每个if语句

时间:2016-12-24 07:09:11

标签: php codeigniter

为什么我的if语句没有检查foreach中的每个数组?如果某人已经选择了相同类型的值,我想从select2值中禁用它,这里的代码如下:

<div data-dir="dir">

结果是如果$ value = $ statusnya,我的整个select2将被禁用。但是,这不是我想要的。 我只想要与$ statusnya完全相同的值被禁用而另一个可用。 有什么建议吗?

4 个答案:

答案 0 :(得分:2)

你正在使用单一的等号(=)不正确你应该使用==进行比较。

替换此行

if($value = $statusnya){

 if($value == $statusnya){

还在foreach之外定义$ no

实施例: -

$no=0;
foreach($hasil as $value => $label)
{                
    if($value == $statusnya){
        $disable[] = "disabled='disabled'";
    }else{
        $disable[] = "";
    }
    echo "<option value='".$value."' $disable[$no]>".$label."</option>";
    $no++;
}

答案 1 :(得分:1)

我知道您已经接受了答案,而且这不是codereview.stackexchange.com但我希望您会考虑以下信息。

使用equality operator(即==)代替assignment operator(即=)来检查$ value是否等于到$ statusnya。此外,您不需要使用阵列来存储已禁用的属性(除非您需要保留有关以后禁用的每个选项的信息)。

foreach($hasil as $value => $label)
{       
      $disabled = ''; // empty string -> not disabled         
     if($value == $statusnya){
           $disabled = "disabled='disabled'";
     }
     echo "<option value='".$value."' $disabled>".$label."</option>";
 }

与字符串相比,数组存储在服务器上需要更多内存,因此页面/应用程序增长需要更多资源。请查看this phpfiddle并查看How big are arrays?

答案 2 :(得分:0)

$disable = arrary();
foreach($hasil as $value => $label)
        {
            $no=0;
            if($value = $statusnya){
                $disable[$no] = "disabled='disabled'";
            }else{
                $disable[] = "";
            }
            echo "<option value='".$value."' $disable[$no]>".$label."</option>";
            $no++;
        }

答案 3 :(得分:0)

$disable = array();
foreach($hasil as $value => $label)
{
    $no=0;
    if($value == $statusnya){
        $disable[$no] = "disabled='disabled'";
    }else{
        $disable[] = "";
    }
    echo "<option value='".$value."' $disable[$no]>".$label."</option>";
    $no++;
}