user2989040
user2989040

Reputation: 87

how to intersect 2 multidimensional array into third multimensional array

i have 2 arryas and i want them to intersect and store the finding matches into third array with values from first array and second array. the first array looks like this:

Array
(
    [0] => Array
        (
            [0] => 45
            [1] => 10640
            [2] => 1041-0567041700116
        )

    [1] => Array
        (
            [0] => 46
            [1] => 10640
            [2] => 1041-0567041700318
        )
    [2] => Array
        (
            [0] => 207
            [1] => 10645
            [2] => 03320103000052
        )

and the second array:

Array
(
    [0] => Array
        (
            [0] => 03320103000052
            [1] => 0
        )

    [1] => Array
        (
            [0] => 10013800805001
            [1] => 12
        )

    [2] => Array
        (
            [0] => 1090-0360141758201
            [1] => 3
        )

the out put should be:

Array
(
        [0] => Array
            (
                [0] => 207                     =>value from first array
                [1] => 10645                   =>value from first array
                [2] => 03320103000052          =>value from first and second array (this is what i need to compare)
                [3] => 0                       =>value from second array
            )

this is similar to this post

but i have problems to store data into multidimensional array

thanks in forward for any suggestions and help

Upvotes: 2

Views: 103

Answers (1)

KevBot
KevBot

Reputation: 18908

You can do this with only two foreach loops and one if statement:

$combined = array();
foreach ($array1 as $a) {
    foreach ($array2 as $b) {
        if ($a[2] == $b[0]) {
            $combined[] = array($a[0], $a[1], $a[2], $b[1]);
        }
    }
}

The following is the test I set up to try this:

<?php
$array1 = array();
$array1[] = array('45', '10640', '1041-0567041700116');
$array1[] = array('46', '10640', '1041-0567041700318');
$array1[] = array('207', '10645', '03320103000052');

$array2 = array();
$array2[] = array('03320103000052', '0');
$array2[] = array('10013800805001', '12');
$array2[] = array('1090-0360141758201', '3');


$combined = array();
foreach ($array1 as $a) {
    foreach ($array2 as $b) {
        if ($a[2] == $b[0]) {
            $combined[] = array($a[0], $a[1], $a[2], $b[1]);
        }
    }
}

print_r($combined);
?>

Upvotes: 1

Related Questions