如何在第一个数组的基础上组合两个数组

I have done so many search and i am beginner in php i don't know exactly what question title should i write so please i am sorry for that i am trying my best to explain what i want. please help me.

I have two arrays

Array
(
    [0] => vodlocker
    [1] => vodlocker
    [2] => vodlocker
    [3] => vidzi
    [4] => vodlocker
)
Array
(
    [0] => vod1
    [1] => vod2
    [2] => vod3
    [3] => vidzi1
    [4] => vod4
)

I want to do combine both array first array as keys and second as values and if first array has same keys so the values of second arrays will be merge for same keys i am sorry if can't explain it well but my result will tell what i want.

Result:

Array
(
   vodlocker => array(vod1, vod2, vod3, vod4)
   vidzi     => array(vidzi1)
)

I have tried this.

Note: $host is my first array and $source is my second array as shown above

$data = [];
$linkarray = [];
foreach($host as $key => $ho){
    array_push($linkarray, $source[$key]);
    $data[$ho] = $linkarray;
}
array:2 [▼
  "vodlocker" => array:5 [▼
    0 => "vod1"
    1 => "vod2"
    2 => "vod3"
    3 => "vidzi1"
    4 => "vod4"
  ]
  "vidzi" => array:4 [▼
    0 => "vod1"
    1 => "vod2"
    2 => "vod3"
    3 => "vidzi1"
  ]
]

I believe this code should solve your problem:

$array1 = array(
    0 => "vodlocker",
    1 => "vodlocker",
    2 => "vodlocker",
    3 => "vidzi",
    4 => "vodlocker"
);
$array2 = array(
    0 => "vod1",
    1 => "vod2",
    2 => "vod3",
    3 => "vidzi1",
    4 => "vod4"
);

$res = array();
for($i = 0; $i < 5; $i++)
{
    if(!isset($res[$array1[$i]]))
        $res[$array1[$i]] = array();
    $res[$array1[$i]][] = $array2[$i];
}

print_r($res);

Output:

Array
(
    [vodlocker] => Array
        (
            [0] => vod1
            [1] => vod2
            [2] => vod3
            [3] => vod4
        )

    [vidzi] => Array
        (
            [0] => vidzi1
        )

)

If i were to do it, i would do it this way:

Demo

<?php

$defs = array('vodlocker', 'vodlocker', 'vodlocker', 'vidzi', 'vodlocker');
$data = array('vod1', 'vod2', 'vod3', 'vidzi1', 'vod4');

$final = array();

foreach($defs as $eachkey=>$eachdef){
  $final[$eachdef][] = $data[$eachkey];
}

print_r($final);
?>

Output:

Array
(
    [vodlocker] => Array
        (
            [0] => vod1
            [1] => vod2
            [2] => vod3
            [3] => vod4
        )

    [vidzi] => Array
        (
            [0] => vidzi1
        )

)

There are many ways to achieve the same thing. The easier the better!!