2016-06-14 19 views
-2

私は2つの多次元配列にFlightdates(Price、Date、Airline、..)を持っています。同じ日付の重複をマージして削除したいのですが、私はを安いものに保つ必要があります。私はいつも同じフライトだが、価格は違う。PHP Merge 2多次元配列が重複を取り除く

$array1 = array(
[0] => Array 
    (
     [price] => 191 
     [date1] => 22-07-2016 
     [date2] => 30-07-2016 
     [airline] => Lufthansa 
    ) 
[1] => Array 
    (
     [price] => 80 
     [date1] => 25-07-2016 
     [date2] => 30-07-2016 
     [airline] => Easyjet 
    ) 
[2] => Array 
    (
     [price] => 243 
     [date1] => 10-08-2016 
     [date2] => 36-08-2016 
     [airline] => Airberlin 
    ) 
); 

$array2 = array(
[0] => Array 
    (
     [price] => 230 
     [date1] => 22-07-2016 
     [date2] => 30-07-2016 
     [airline] => Lufthansa 
    ) 

[1] => Array 
    (
     [price] => 80 
     [date1] => 25-07-2016 
     [date2] => 30-07-2016 
     [airline] => Easyjet 
    ) 

[2] => Array 
    (
     [price] => 200 
     [date1] => 10-08-2016 
     [date2] => 36-08-2016 
     [airline] => Airberlin 
    ) 
); 

答えて

0
第一アレイを介し

ちょうどループと最初の配列のキーに対して二番目の配列内の価格と一致して、新しい配列にに値をプッシュ..

最初の答え

<?php 
$newArray = array(); 
foreach($array1 as $key =>$val) 
{ 
    if($val['price'] <= $array2[$key]['price']) 
    { 
     $newArray[] = $val; 
    } 
    else 
    { 
     $newArray[] = $array2[$key]; 
    } 
} 
print_r($newArray); 
?> 

LIVE例:CLICK HERE

第二に回答

$newArray = array(); 
foreach($array1 as $key => $val) 
{ 
    foreach($array2 as $k => $v) 
    { 
     if($val['date1'] == $v['date1'] && $val['date2'] == $v['date2'] && $val['airline'] == $v['airline']) 
     { 
      if($val['price'] <= $array2[$key]['price']) 
      { 
       $newArray[] = $val; 
      } 
      else 
      { 
       $newArray[] = $v; 
      } 
     } 
    } 
} 
print_r($newArray); 

LIVE例:CLICK HERE

これはあなたを与えるだろう。

本当にいいです
Array 
(
    [0] => Array 
     (
      [price] => 191 
      [date1] => 22-07-2016 
      [date2] => 30-07-2016 
      [airline] => Lufthansa 
     ) 

    [1] => Array 
     (
      [price] => 80 
      [date1] => 22-07-2016 
      [date2] => 30-07-2016 
      [airline] => Easyjet 
     ) 

    [2] => Array 
     (
      [price] => 200 
      [date1] => 22-07-2016 
      [date2] => 30-07-2016 
      [airline] => Airberlin 
     ) 

) 
+0

!ありがとうございました!私もそれが必要になりますが、今私は考えが間違っていたことを認識します。配列には異なるキーがいくつかあります。私は同じ日付をチェックし、最も安い価格を保つだけでよい。多分あなたはアイデアを持っているでしょうか? ( - : – Dennis

+0

@Dennisあなたが 'date1'と' date2'をチェックしたいのですが、もし両方の日付が2番目の配列で一致すれば、最も安いものを探していますか? –

+0

はい。 日付1と日付2が最も安いのと同じです – Dennis