1

I want to add value to array and then I want to use these arrays in array intersect. Codes are in bellow. Where am I doing mistake?

$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);
}

Output is :

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

I want to be this :

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

Thanks,

Halim
  • 65
  • 9

2 Answers2

1

Try This

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

}
Afzal
  • 132
  • 10
0

You are misusing array_intersect. This method does works on values in an array not on a single value.
To use it the way You want You should split your values by comma and insert them as separate values. For example: value: '1,2,3,4' should be inserted as:

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

Solution (without loops etc):

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

?>
malutki5200
  • 1,092
  • 7
  • 15