PHP数组操作 - 如何选择元素然后随机播放剩余的项目

时间:2011-04-05 16:10:01

标签: php arrays

基本上,我需要将PHP数组中的几个随机项添加到用户从该数组中选择的项中。例如,如果数组是:

"kiwi, orange, pineapple, apple, grape, starfruit, kumquat"

并且用户选择“菠萝”我想从剩余的数组项中选择X个额外的水果。关键是“菠萝”既不是选择,也不是其他水果之一,所以一旦选择它作为选择,它就需要从数组中排除。

Selection: pineapple
Your additional fruits:  kiwi, grape, orange

NOT     选择:菠萝     你的额外水果:猕猴桃,菠萝,葡萄

我实际上是用文件名而不是水果来做这件事,但用这种方式描述似乎更容易。

我想我可以做随机选择部分,但我不确定如何删除从PHP中给定数组中选择的项目。非常感谢任何建议或想法。

4 个答案:

答案 0 :(得分:3)

如果您事先不知道所选项目的确切位置,请使用 array_search() 查找其索引。 unset()来自数组,然后进行随机选择。

示例

$key = array_search('pineapple', $fruits);
unset($fruits[$key]);

// Random selection here

答案 1 :(得分:0)

如果你知道菠萝的指数,你可以解开它。这会将其从数组中删除:unset($array[$index]);

答案 2 :(得分:0)

您可以使用array_splice删除元素(使用整数引用,例如$ Array [5])

array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement ]] )

http://php.net/manual/en/function.array-splice.php

您可以使用shuffle

混合数组

bool shuffle ( array &$array )

http://php.net/manual/en/function.shuffle.php

这应该可以胜任!

答案 3 :(得分:0)

另一种方法是使用array_diff直接返回一个不包含所选元素的数组,例如:

$theFruit = 'pineapple';
$remainder = array_diff($arr, array($theFruit));

//shuffle
shuffle($remainder);

// now do something with the first three from the shuffled remainder
print_r(array_slice($remainder, 0, 3));