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