如何在一个数组中随机插入另一个数组的元素

5

假设我有以下数组:

$numbers = array(1,2,3,4,5);

而这个数组:

$letters = array('A','B','C');

我希望将$letters项随机放入$numbers中。我不关心$letters的顺序,但我希望$numbers的顺序保持不变。目标是得到以下类型的数组:
$randomLettersInNumbers = array(1, 'B', 2, 3, 'A', 4, 'C', 5);

我该如何实现这个?

呃……不好意思,我的问题太大了吗……?我相信我必须使用 array_splice 但是我所有的尝试都以一个巨大且难以理解的函数(它不起作用)结束。 - lepix
可能是重复的问题:https://dev59.com/RlLTa4cB1Zd3GeqPaneC 和 http://stackoverflow.com/questions/6377433/join-two-php-arrays-randomly - Nir Alfasi
似乎PHP没有针对数组的任意插入函数,这使得编写变得混乱。在Python中,只需使用以下代码即可轻松实现:[numbers.insert(random.randint(0, len(numbers) - 1), letter) for letter in letters] - Not_a_Golfer
2
@alfasin 不要重复。一个数组应该保持顺序,而另一个则是随机的并随机插入的。这与参考问题有很大的不同。可能的解决方案也是如此。 - Samuel Herzog
1
@SamuelHerzog 很有说服力的论点 :) - Nir Alfasi
1个回答

13
foreach($letters as $letter)
{
    array_splice($numbers, rand(0, count($numbers)), 0, $letter);
}
print_r($numbers);

如果您正在使用类对象并且想要插入一个项目,您仍然必须将其提供为具有一个元素的数组,否则它将被强制转换为数组(每个属性将成为一个键)。 - StockBreak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接