组合两个阵列 - 第一个按顺序排列第二个

时间:2012-08-18 17:13:59

标签: php arrays

我将以下数组合并为一个。第二个数组$ads随机插入到第一个数组$EM_Events中,但插入的项目在插入时始终保持在一起。我想让它们在整个第一个数组中随机插入,而不是保持在一起,而不是改变第一个数组的顺序。我错过了什么?

$EM_Events = EM_Events::get( array(
'scope'=>'future', 
'limit'=>6,
'category'=>'6'
));

$ads = EM_Events::get( array(
'scope'=>'future', 
'limit'=>2,
'category'=>'56'
));


$offset = array_rand($EM_Events);
array_splice($EM_Events, $offset, 0, $ads);

2 个答案:

答案 0 :(得分:2)

array_splice只会在数组中的某个偏移处执行单个插入,因此您说第二个数组将保持在一起。

您需要循环遍历第二个阵列的所有元素并依次插入每个元素。像(未经测试)的东西:

foreach ( $ads as $ad ) {
    $offset = array_rand($EM_Events);
    array_splice($EM_Events, $offset, 0, $ad);
}

或者

while ( $ad = array_pop($ads) ) {
    $offset = array_rand($EM_Events);
    array_splice($EM_Events, $offset, 0, $ad);
}

答案 1 :(得分:-1)

你要做的是, 第二个数组是随机的,您尝试将它包含在第一个数组中的随机位置。 但是在随机化第二个数组之后,使第一个数组的偶数空格为空,即$ EM_EVENTS(0),$ EM_EVENTS(1),$ EM_EVENTS(2),$ EM_EVENTS(3)中的元素现在保存在$中EM_EVENTS(1),$ EM_EVENTS(3),$ EM_EVENTS(5)等,并使用循环填充偶数空格。由于数组已经随机化,因此您可以获得所需的输出。 清楚了吗?