2016-12-06 53 views
1

我想爲數組添加值,然後我想在陣列相交中使用這些數組。代碼在下面。我在哪裏做錯了?php array_push和array_intersect

$array =['1,2,3,4','3,4,5','2,3']; 

$arr2 = []; 
$common = []; 

for($i=0; $i<count($array); $i++) 
{ 
    $arr1 = []; 
    if($i==0) 
    { 
     array_push($arr1, $array[$i]); 
     array_push($arr2, $array[$i]); 
     $common = array_intersect($arr1,$arr2); 
    } 
    else 
    { 
     array_push($arr1, $array[$i]); 
     $common = array_intersect($arr1,$common); 
    } 

    print_r($common); 
} 

輸出爲

Array ( 
    [0] => 1,2,3,4 
) 
Array () 
Array () 

我想是這樣的:

Array ( 
    [0] => 1,2,3,4 
) 
Array(
    [0] => 3,4 
) 
Array(
    [0] => 3 
) 

感謝,

+0

你能給更深入地瞭解你是什麼試圖實現,而不僅僅是你想要使用的功能。例如 - 「我想要這個和這個數組之間的區別」。 – vuryss

+0

你想比較每一對呢? – RomanPerekhrest

+0

$ array總是可以改變的。當爲$ array添加一個值時,我想要區別來自其他人的最後一個值。 – Halim

回答

1

嘗試這個

<?php 

$array =['1,2,3,4','3,4,5','2,3']; 
$arr1 = []; 

for($i=0; $i<count($array); $i++) 
{ 
    $j='arr'.$i; 
    $j= []; 
    if($i==0){ 
    array_push($j, $array[$i]); 
    } 
    else{ 
     $a = explode(',',$array[$i-1]); 
     $b = explode(',',$array[$i]); 
     $c = array_intersect($a,$b); 
     $d= implode(',',$c); 
     array_push($j, $d); 
    } 
    echo "<pre>"; print_r($j); 

} 
+0

就是這樣!謝謝 – Halim

0

你濫用array_intersect。此方法在數組中的值不在單個值上。
以您想要的方式使用它您應該用逗號分隔您的值,並將它們作爲單獨的值插入。例如: 值:'1,2,3,4'應插入爲:

$array = ['1', '2', '3', '4']; 

解決方案(沒有循環等):

<?php 
$array =['1,2,3,4','3,4,5','2,3']; 

$arr1 = array(); 
$arr2 = array(); 
$common = array(); 

$arr1 = explode(',', $array[0]); 
$arr2 = explode(',', $array[1]); 

$common =array_intersect($arr1, $arr2); 
print_r($common); 

$arr3 = explode(',', $array[2]); 
$common2 = array_intersect($common, $arr3); 
print_r($common2); 

?>