Home Ask Login Register

Developers Planet

Your answer is one click away!

Tanvir Alam February 2016

php array matching between two arrays

$a = array('one'=> val, 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten'); 
$b = array('four'=> val, 'one'=> val, 'eight'=> val, 'five'=> val) 

I have two arrays as shown above.

need result like this:

will output:

'one' => val
'two' => 0
'three' => 0
'four' => val
'five' => val
'six' => 0
'seven' => 0
'eight' => val
'nine' => 0
'ten'  => 0

Is there easy way to do this?

any help would be good


DurtyFree February 2016

Actually array_intersect does something like this. It creates an new array out of these 2 arrays, only holding the values which are available in both arrays.


array_intersect() returns an array containing all the values of array1 that are present in all the arguments. Note that keys are preserved.

edit: You should rather use array-diff,

Compares array1 against one or more other arrays and returns the values in array1 that are not present in any of the other arrays.


The code for your output described above would be something like:

$a = array('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten'); 
$b = array('four', 'one', 'eight', 'five');

//Find matches and not matches
$matches = array_intersect($a, $b);
$dontmatches = array_unique(array_merge($a, $b));

//Set all dont matches to 0
for($i = 0; $i<count($dontmatches);$i++)
    $dontmatches[$i] = 0;

$final = array_merge($matches, $dontmatches);

I used both described functions from above plus the following:



Post Status

Asked in February 2016
Viewed 1,861 times
Voted 5
Answered 1 times


Leave an answer

Quote of the day: live life