2015-05-28 117 views
2

我的問題是:爲什麼腳本輸入所有if語句?即使「陣列」問題不應該讓他們。PHP如果聲明錯誤

首先我向你展示我從模型中得到的數組: 在這種情況下,數組就像array([0] => array()),因爲我只從數據庫中獲得1行。

array(1) { 
    [0]=> 
    array(7) { 
    ["Kunden_ID"]=> 
    float(250) 
    ["Kundentyp_ID"]=> 
    float(1) 
    ["kundentyp_row_id"]=> 
    int(100) 
    ["ext_kdnr"]=> 
    float(0) 
    ["kundentyp_anmerkung"]=> 
    string(0) "" 
    ["status"]=> 
    string(0) "" 
    ["name"]=> 
    string(4) "ROLA" // Thats what we are looking for in our statements 
    } 
} 

在下面的代碼中,我需要檢查一個特定的字符串是否在結果數組的特定索引中。 這樣我就可以創建稍後需要的關係。

我們的代碼:

for($i = 0; $i < $arr_length; $i++){ // for runs only once since we only get 1 row back 
     if(in_array("ROLA", $result_array[$i])){ 
// check if you find the string "ROLA" in the array idx $i 
      $rola = true; 
      $rola_pos = $i; 
      $rola_row = $result_array[$i]["kundentyp_row_id"]; 
      echo "<br/>ROLA TYP AKTIV"; 
     } 
     if(in_array("ROLA_OBC", $result_array[$i])){ 
      $rola_obc = true; 
      $rola_obc_pos = $i; 
      $rola_obc_row = $result_array[$i]["kundentyp_row_id"]; 
      echo "<br/>ROLA OBC TYP AKTIV"; 
     } 
     if(in_array("MYTO_FAI", $result_array[$i])){ 
      $myto_fai = true; 
      $myto_fai_pos = $i; 
      $myto_fai = $result_array[$i]["kundentyp_row_id"]; 
      echo "<br/>MYTO FAI TYP AKTIV"; 
     } 
     if(in_array("OMV", $result_array[$i])){ 
      $omv = true; 
      $omv_pos = $i; 
      $omv = $result_array[$i]["kundentyp_row_id"]; 
      echo "<br/>OMV TYP AKTIV"; 
     } 
     if(in_array("VAT", $result_array[$i])){ 
      $vat = true; 
      $vat_pos = $i; 
      $vat = $result_array[$i]["kundentyp_row_id"]; 
      echo "<br/>VAT TYP AKTIV"; 
     } 
     if(in_array("PLAKETTEN", $result_array[$i])){ 
      $plaketten = true; 
      $plaketten_pos = $i; 
      $plaketten = $result_array[$i]["kundentyp_row_id"]; 
      echo "<br/>PLAKETTEN TYP AKTIV"; 
     } 
     if(in_array("SPEDITION", $result_array[$i])){ 
      $spedition = true; 
      $spedition_pos = $i; 
      $spedition = $result_array[$i]["kundentyp_row_id"]; 
      echo "<br/>SPEDITION TYP AKTIV"; 
     } 
     if(in_array("MOEST", $result_array[$i])){ 
      $moest = true; 
      $moest_pos = $i; 
      $moest = $result_array[$i]["kundentyp_row_id"]; 
      echo "<br/>MOEST TYP AKTIV"; 
     } 
     if(in_array("BERUFUNGEN", $result_array[$i])){ 
      $berufungen = true; 
      $berufungen_pos = $i; 
      $berufungen = $result_array[$i]["kundentyp_row_id"]; 
      echo "<br/>BERUFUNGEN TYP AKTIV"; 
     } 
     if(in_array("DIVERSE", $result_array[$i])){ 
      $diverse = true; 
      $diverse_pos = $i; 
      $diverse = $result_array[$i]["kundentyp_row_id"]; 
      echo "<br/>DIVERSE TYP AKTIV"; 
     } 
    } 

正如你看到的結果數組包含字符串「ROLA」因此第一個IF語句應該是真實和執行。是這樣的。 但所有其他if語句也是如此。 爲什麼?

編輯

如這裏要求的東西,你可以複製粘貼到一個PHP文件來複制它:

$testArr = array (0 => array ('Kunden_ID' => 250, 'Kundentyp_ID' => 1, 'kundentyp_row_id' => 100, 'ext_kdnr' => 0, 'kundentyp_anmerkung' => '', 'status' => '', 'name' => 'ROLA',)); 

$length = count($testArr); 
for($i = 0; $i < $length; $i++){ 
    if(in_array("ROLA", $testArr[$i])){ 
     $rola = true; 
     echo "<br/>ROLA TYP AKTIV"; 
    } 
    if(in_array("ROLA_OBC", $testArr[$i])){ 
     $rola_obc = true; 
     echo "<br/>ROLA OBC TYP AKTIV"; 
    } 
    if(in_array("MYTO_FAI", $testArr[$i])){ 
     $myto_fai = true; 
     echo "<br/>MYTO FAI TYP AKTIV"; 
    } 
    if(in_array("OMV", $testArr[$i])){ 
     $omv = true; 
     echo "<br/>OMV TYP AKTIV"; 
    } 
    if(in_array("VAT", $testArr[$i])){ 
     $vat = true; 
     echo "<br/>VAT TYP AKTIV"; 
    } 
    if(in_array("PLAKETTEN", $testArr[$i])){ 
     $plaketten = true; 
     echo "<br/>PLAKETTEN TYP AKTIV"; 
    } 
    if(in_array("SPEDITION", $testArr[$i])){ 
     $spedition = true; 
     echo "<br/>SPEDITION TYP AKTIV"; 
    } 
    if(in_array("MOEST", $testArr[$i])){ 
     $moest = true; 
     echo "<br/>MOEST TYP AKTIV"; 
    } 
    if(in_array("BERUFUNGEN", $testArr[$i])){ 
     $berufungen = true; 
     echo "<br/>BERUFUNGEN TYP AKTIV"; 
    } 
    if(in_array("DIVERSE", $testArr[$i])){ 
     $diverse = true; 
     echo "<br/>DIVERSE TYP AKTIV"; 
    } 
} 
+0

很確定你想使用'in_array(「whatever」,$ result_array)',而不是'$ result_array [$ i]'... –

+2

與你的bug無關,但你應該**使用'loop' **,這段代碼有太多的重複,它只是尖叫:) –

+0

@EdCottrell我不想檢查它是否在WHOLE數組中。我需要看看它是否在特定的子陣列中。因爲如果我進入result_array [1]例如,那麼我知道所有其他條目都與我正在尋找的STRING相關。如果我簡單地檢查它是否在整個陣列中,我不能真正地做出任何具體關係 –

回答

2

嘗試使用「嚴格」標誌(in_array的第三個參數)。 例如:

if(in_array("ROLA", $testArr[$i], true)){ 
    $rola = true; 
    echo "<br/>ROLA TYP AKTIV"; 
} 
if(in_array("ROLA_OBC", $testArr[$i], true)){ 
    $rola_obc = true; 
    echo "<br/>ROLA OBC TYP AKTIV"; 
} 
if(in_array("MYTO_FAI", $testArr[$i], true)){ 
    $myto_fai = true; 
    echo "<br/>MYTO FAI TYP AKTIV"; 
} 
+0

謝謝你解決了這個問題! 你能解釋一下爲什麼嗎? ^^ –