0
$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

3
  • Is 'height' a typo, or deliberate? And what's this got to do with MySQL? Commented Feb 8, 2016 at 16:08
  • sorry its typo, let me correct it Commented Feb 8, 2016 at 16:11
  • Your $a-array looks like 'one'=>val, [0]=>two, [1]=>three..etc, you wish to compare slightly different array structures. Commented Feb 8, 2016 at 16:29

1 Answer 1

1

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

Sign up to request clarification or add additional context in comments.

2 Comments

yes, I am familiar with it but it gives only that data exist. i need all data and show them as 0
@user4499992 See my edit, mind that I had to change your array structure, as it represented 2 different structures.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.