php array_push和array_intersect

问题描述:

我想为数组添加值,然后我想在阵列相交中使用这些数组。代码在下面。我在哪里做错了?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

尝试这个

<?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

你滥用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); 

?>