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

时间:2015-07-03 04:05:40

标签: php arrays

我做了很多搜索,我是php的初学者我不知道我应该写什么题目标题所以请对不起,我正在努力解释我想要的东西。请帮帮我。

我有两个数组

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

我想将数组第一个数组合作为键,第二个数组合作为值,如果第一个数组具有相同的键,那么第二个数组的值将合并为相同的键我很抱歉如果不能解释它但是我的结果会告诉我想要什么。

结果:

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

我试过了。

注意:$ host是我的第一个数组,$ source是我的第二个数组,如上所示

$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"
  ]
]

2 个答案:

答案 0 :(得分:2)

我相信这段代码可以解决您的问题:

$ echo 1234 45678 | egrep -o '([0-9]) *\1'
4 4

Output

$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);

答案 1 :(得分:1)

如果我这样做,我会这样做:

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);
?>

输出:

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

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

)

有很多方法可以实现同样的目标。越容易越好!!