2016-05-01 70 views
1

我已經定義的兩個數組中無法在兩個PHP的foreach設定數組值循環

$array1 = (8,10); 

ARRAY2是stdobjects這以後被轉換成下面使用JSON解碼,編碼的陣列。相同的PHP的echo輸出低於:

$array2 = Array 
(
    [0] => Array 
     (
      [id] => 6 
     ) 

    [1] => Array 
     (
      [id] => 8 
     ) 

    [2] => Array 
     (
      [id] => 10 
     ) 

) 

後來我創建了一個陣列

foreach($array2 as $value) 
      { 
       $valuesArray[] = array('',$value['id'],Input::get('date'),'0'); 
      } 

我所試圖做的是比較陣列1與valuesarray。如果$ value ['id']即第二個元素與array1中的任何元素相匹配,那麼我會將$ nnn的第四個元素保存爲1.如果它不匹配任何元素,我將其保存爲0. My下面的代碼:

foreach ($valuesArray as $value2) 
     { 
        foreach ($array1 as $value1) 
        { 
         if ($value2[1] == $value1) 
          {$x = 1;} 
         else 
          {$x = 0;} 
        } 
       $nnn[] = "('','".$value2[1]."','".Input::get('date')."','".$x."')"; 
       } 

      echo '<pre>',print_r($nnn,1),'</pre>'; 

,我得到的輸出是: 陣列

(
    [0] => ('','6','2016-04-25','0') 
    [1] => ('','8','2016-04-25','0') 
    [2] => ('','10','2016-04-25','1') 
) 

正確的輸出應該是:

Array 
(
    [0] => ('','6','2016-04-25','1') 
    [1] => ('','8','2016-04-25','1') 
    [2] => ('','10','2016-04-25','0') 
) 
+2

如果您發現第一個數組中的值需要在break部分中'break'您的innerForeach循環,否則您仍然會遍歷第一個數組的所有值並檢查下一個值是否仍然存在等於第二個數組值。 – Rizier123

回答

1

試試這個:

$nnn = array(); 
foreach ($valuesArray as $value) { 
    $x = (in_array($value[1], $array1))?1:0; 
    $nnn[] = "('','".$value[1]."','".Input::get('date')."','{$x}')"; 
} 
+0

OP爲什麼要「試試這個」? – Rizier123

+0

,因爲代碼循環遍歷valuesArray並將值與$ array1進行比較。 – cookies