2017-12-11 4 views
0

私は2つの配列PHP結果

$array1 = array("2017-12-08","2017-12-09","2017-12-10","2017-12-11","2017-12-12","2017-12-13","2017-12-14","2017-12-15","2017-12-16","2017-12-17","2017-12-18","2017-12-19","2017-12-20","2017-12-21","2017-12-22"); 
$array2 = array("Y","Y","Y","Y","Y","N","N","N","Y","Y","Y","N","N","Y","Y"); 

を持っている私は、キー=「Y」最初と最後の日付を必要としています。このように:

$result = array("2017-12-08 - 2017-12-12", "2017-12-16 - 2017-12-18", "2017-12-21 - 2017-12-22"); 

どうすればいいですか? 私はarray_combineで試してみましたが、その後は日付のペアをどのようにリストするのか分かりません。答え

から移動


はい、これは、Justinas良いアイデアですが、結果は私が必要と正確に何ではありません。あなたの結果は私に最初の2017-12-08と最後の2017-12-22を与える。しかし、私は次のように、すべてのペアから最初と最後の日付を必要とする:

"2017-12-08 - 2017-12-12" 
"2017-12-16 - 2017-12-18" 
"2017-12-21 - 2017-12-22" 

私は

INSERT INTO $table start='firstDate' AND end='lastDate'. 

好きで、この例3でDBに挿入する必要があるためライン。

+0

私はあなたが疑問に思っています。もう少し詳しく説明しようと思います。 – Web28

答えて

0

まずYとしての価値が含まれている唯一の配列のキーを見つける:

$yes = array_filter($array2, function ($yn) {return $yn == 'Y'}); 

今配列2でYを持っている日付を取得するために$result = array_intersect_key($array1, $yes)を行います。

最後に最初に(current($result))、最後にend($result)になります。

Example