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

Answers


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.

http://php.net/manual/en/function.array-intersect.php

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.

http://php.net/manual/en/function.array-diff.php

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

<?php
$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);
print_r($final);
?>

I used both described functions from above plus the following:

http://php.net/manual/en/function.array-unique.php

http://php.net/manual/en/function.array-merge.php

Post Status

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

Search




Leave an answer


Quote of the day: live life