Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sorting and merge associative array (PHP)

I have 2 associative arrays:

[0] => Array (
    [time] => 09:00:00
    [name] => To do something 1
    )
[1] => Array (
    [time] => 09:30:00
    [name] => To do something 2
    )
[2] => Array (
    [time] => 10:00:00
    [name] => To do something 3
    )

and

[0] => Array (
    [time] => 09:00:00
    )
[1] => Array (
    [time] => 09:15:00
    )
[2] => Array (
    [time] => 09:30:00
    )
[3] => Array (
    [time] => 09:45:00
    )
[4] => Array (
    [time] => 10:00:00
    )

Need to do another associative array:

  • if the field [time] in second array equals field [time] in first array then add [name];
  • if field [time] in second array not equals field [time] in first array then add empty [name].

Should look like this:

[0] => Array (
    [time] => 09:00:00
    [name] => To do something 1
    )
[1] => Array (
    [time] => 09:15:00
    [name] => 
    )
[2] => Array (
    [time] => 09:30:00
    [name] => To do something 2
    )
[3] => Array (
    [time] => 09:45:00
    [name] => 
    )
[4] => Array (
    [time] => 10:00:00
    [name] => To do something 3
    )
like image 671
Vasiliy Schitov Avatar asked Feb 16 '26 03:02

Vasiliy Schitov


1 Answers

After some puzzling I made it work for you.

This is the code you can use:

$array3 = array();

foreach ($array2 as $key2 => $value2){
    $found = false;

    foreach ($array1 as $key1 => $value1){
        if ($array1[$key2]['time'] == $array2[$key2]['time']) {
            $array3[$key2]['time']  = $array1[$key1]['time'];
            $array3[$key2]['name'] = $array1[$key1]['name'];
            $found = true;
        }
    }
    if (!$found){
        //add
        $array3[$key2]['time']  = $array2[$key2]['time'];
        $array3[$key2]['name'] = "";

    }
}

print_r($array3);
like image 79
Bas van Stein Avatar answered Feb 18 '26 18:02

Bas van Stein



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!