2017-09-15 60 views
1

我有2個日期數組。我需要最有效的方法來構建第三個日期數組,其中只包含日期的兩個數組中相同的日期。如何從PHP中的日期現有數組中創建新的日期數組?

例如:

List of Dates #1: 
2017-01-01 
2017-01-02 
2017-01-03 
2017-02-01 
2017-02-02 
2017-09-09 

List of Dates #2: 
2017-01-01 
2017-02-01 
2017-03-01 
2017-04-01 

So array 3 should be: 
2017-01-01 
2017-02-01 
+0

可能會有幫助:https://www.w3schools.com/php/func_array_uintersect.asp –

回答

2

您正在尋找array_intersect

工作演示https://eval.in/862254

$array1 = array("2017-01-01", "2017-01-01" ,"2017-01-02","2017-01-03","2017-02-01", "2017-02-02","2017-09-09"); 

$array2 = array("2017-01-01","2017-02-01","2017-03-01","2017-04-01"); 
$result = array_intersect(array_unique($array1), $array2); 
echo "<pre>"; 
print_r($result); 

輸出:

Array 
(
    [0] => 2017-01-01 
    [3] => 2017-02-01 
) 

array_intersect返回 $array1其值存在於所有的參數包含所有值的陣列。因此,如果您的 $array1有重複數據,則結果數組也有 重複值。

我已經加入了array_unique來克服這種情況。

+0

任何方式來防止重複的條目?當我嘗試這個時,這就是我的踢球者。即使有多個重疊日期,輸出也不能包含重複條目。 –

+0

你可以使用[array_unique](http://php.net/manual/en/function.array-unique.php) –

+0

這是完美的,謝謝!完美的作品 –

0

也許array_intersect()

$array1 = array ("a" => "green", "red", "blue"); 
$array2 = array ("b" => "green", "yellow", "red"); 
$result = array_intersect ($array1, $array2); 

結果

Array 
(
    [a] => green 
    [0] => red 
) 
0

試試這個

function myfunction($a,$b) 
{ 
if ($a===$b) 
    { 
    return 0; 
    } 
    return ($a>$b)?1:-1; 
} 

$a1=array("a"=>"red","b"=>"green","c"=>"blue","yellow"); 
$a2=array("A"=>"red","b"=>"GREEN","yellow","black"); 
$a3=array("a"=>"green","b"=>"red","yellow","black"); 

$result=array_uintersect($a1,$a2,$a3,"myfunction"); 
print_r($result); 

結果:

Array ([a] => red [0] => yellow)