2016-12-24 7 views
1

if文がforeach内の各配列をチェックしていないのはなぜですか?誰かがすでに値の同じ種類を選択した場合、私はSELECT2値からそれを無効にしたい、ここに私のコードは次のようになります:foreach内の各if文のチェック

function get_status_cab() 
    { 
     $status=$_POST['search']; 
     echo '<label for="username" class="col-sm-3 control-label">Status</label>'; 
     echo '<div class="col-sm-9">'; 
     echo '<select class="form-control select2" name="status">'; 
      $cek=$this->db_umum->select("SELECT id,status FROM lembaga where id='$status'"); 
      foreach($cek as $cek){ 
       $statusnya = $cek->status; 
      } 
      $hasil=array(
       "pusat" => "Pusat", 
       "cabang" => "Cabang", 
       "unit" => "Unit", 
       "proyek" => "Proyek", 
       "subproyek" => "Subproyek" 
      ); 
     foreach($hasil as $value => $label) 
     { 
      $no=0; 
      if($value = $statusnya){ 
       $disable[] = "disabled='disabled'"; 
      }else{ 
       $disable[] = ""; 
      } 
      echo "<option value='".$value."' $disable[$no]>".$label."</option>"; 
      $no++; 
     } 
     echo '</select></div><br/>'; 
    } 

$値= $ statusnya場合結果は、私の全体のSELECT2が無効になります。しかし、それは私が望むものではありません。 $ statusnyaが無効で、もう一方が利用可能であるという正確な値だけを必要とします。 アドバイスはありますか?

+1

if($ value = $ statusnya){ $ disable [] = "disabled = 'disabled'"; } else { $ disable [] = ""; } –

+0

'$ disable'はどこで使用されていますか?そして、あなたは代入(つまり '=)'と等価(つまり '==')の違いを知っていますか? –

+0

@SamOnela ==同じ、動作しない –

答えて

2

あなたは(=)シングル等しいを使用しているあなたは、比較のために==を使用する必要があり訂正していないthatsの。

も外

のforeachの例$何を定義し、このラインに

if($value == $statusnya){ 

if($value = $statusnya){ 

を交換しません: - 私はあなたが既に答えを受け入れ知っ

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

==同じ、動作しない、まだ私の全体の選択は無効にされている –

+0

その仕事は魅力のようです!、問題はforeach内で$ no = 0です.. –

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++; 
     } 
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++; 
} 
1

、およびこれはcodereview.stackexchange.comではありませんが、以下の情報を考慮していただければ幸いです。

$の値は$ statusnyaに等しいであるかどうかをチェックする代わりにassignment operator(すなわち=)のequality operator(すなわち==)を使用します。 無効な属性を格納するために配列を使用する必要もありません(後で無効にする各オプションについての情報を保持する必要がない場合)。

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?を見てください。

+0

注目の男!これはこれまで私が探していたものです。違いの答え。私はコードを知っているだけで、将来の開発にはいいのか分からない。 –

関連する問題