基本上,我需要将PHP数组中的几个随机项添加到用户从该数组中选择的项中。例如,如果数组是:
"kiwi, orange, pineapple, apple, grape, starfruit, kumquat"
并且用户选择“菠萝”我想从剩余的数组项中选择X个额外的水果。关键是“菠萝”既不是选择,也不是其他水果之一,所以一旦选择它作为选择,它就需要从数组中排除。
Selection: pineapple
Your additional fruits: kiwi, grape, orange
NOT 选择:菠萝 你的额外水果:猕猴桃,菠萝,葡萄
我实际上是用文件名而不是水果来做这件事,但用这种方式描述似乎更容易。
我想我可以做随机选择部分,但我不确定如何删除从PHP中给定数组中选择的项目。非常感谢任何建议或想法。
答案 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));