2017-09-06 3 views
1

一連のifステートメントを使用して、値が配列内にあるかどうかを確認します。問題は、見つかった最後の値に対してのみ機能することです。in_arrayを使用した一連のifステートメントは、最後のステートメントでのみ機能します。

私のコードは次のとおり

$accommodation_list = array(); 
    $ind_apt_query = array(); 
    $cottage_query = array(); 
    $asst_living_query = array(); 
    $skilled_care_query = array(); 
    $memory_loss_query = array(); 

if(isset($_GET['accommodations'])){ 
     $accommodation_values = implode(', ', $_GET['accommodations']); 
     $accommodation_list = explode(" ", $accommodation_values); 

     if(in_array('cottage_units', $accommodation_list)){ 
      $cottage_query = array(
       'key' => 'rfp_cottage_units', 
       'value' => '', 
       'compare' => '!=', 
      ); 
     } 

     if(in_array('ind_apts', $accommodation_list)){ 
      $ind_apt_query = array(
       'key' => 'rfp_ind_apt', 
       'value' => '', 
       'compare' => '!=', 
      ); 
     } 

     if(in_array('asst_living', $accommodation_list)){ 
      $asst_living_query = array(
       'key' => 'rfp_assist_living_units', 
       'value' => '', 
       'compare' => '!=', 
      ); 
     } 

     if(in_array('skilled_care', $accommodation_list)){ 
      $skilled_care_query = array(
       'key' => 'rfp_skilled_care_beds', 
       'value' => '', 
       'compare' => '!=', 
      ); 
     } 

     if(in_array('memory_loss', $accommodation_list)){ 
      $memory_loss_query = array(
       'key' => 'rfp_memory_loss_units', 
       'value' => '', 
       'compare' => '!=', 
      ); 
     } 

    } 

もしそうであれば$のaccommodation_list =配列([0] => cottage_units、[1] => asst_living、[2] => memory_loss)のみの$ memory_loss_queryが移入されます他のもの($ cottage_queryと$ asst_living_query)はまだ空です。

これを配列のすべての値で使用するにはどうすればよいですか?

+0

冒頭に内破/爆発するものを取り除く:

だけ元の配列に直接ごin_array()コールを確認し、アレイを再構築そして破壊する必要はありません。 – Calimero

+1

あなたは ''にimplodingしてから ''に結果を展開します。これは、配列の値にコンマが入ることを意味します。 –

答えて

2

あなたは、配列の値がそれらにカンマを持ってしようとしていることを意味する、<comma><space>に内破し、その後<space>に結果を爆発している:

(
    [0] => cottage_units, 
    [1] => asst_living, 
    [2] => memory_loss 
) 

ですから、明らかに失敗したasst_living,asst_livingを比較してしまいます。

if (in_array('asst_living', $_GET['accommodations'])) { 
    // ... 
} 
+0

すごく早くてくれてありがとう。ソリューションは完璧に機能しています! – Chris

関連する問題