Reputation: 516
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"
]
]
Upvotes: 2
Views: 103
Reputation: 870
If i were to do it, i would do it this way:
<?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!!
Upvotes: 1
Reputation: 670
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);
Array
(
[vodlocker] => Array
(
[0] => vod1
[1] => vod2
[2] => vod3
[3] => vod4
)
[vidzi] => Array
(
[0] => vidzi1
)
)
Upvotes: 2