2014-09-25 2 views
0

У меня есть значения массива 6, мне нужно вернуть 4 случайных значения из массива, но все они не должны быть равны.PHP. Возвращает случайные значения из массива, но не равно

Пример:

Если у меня есть массив (6 значений) 1, 2, 3, 4, 5, 6, что нужно, чтобы получить 4 случайные значения из него, например 3, 1, 4, 2. Сейчас это возвращение к примеру: 2,2,3,2

Вот код:

$array= array(1, 2, 3, 4, 5, 6); 
for ($i = 0; $i < 4; $i++) { 
$k = array_rand($array); 
$random_element = $array[$k]; 
echo $random_element; 
} 

ответ

5

Вы можете shuffle() массив, а затем array_slice() некоторые элементы из него:

shuffle($array); 
$random_elements = array_slice($array, 0, 4); // with 4 the number of random values 
+0

Спасибо ответа для г. Он возвращает ArrayArrayArrayArray – 2014-09-25 11:48:19

+0

@Infinity, вам нужно предусмотреть массив по случайным элементам, например 'foreach ($ random_elements as $ value) {echo $ value; } ' – bwoebi

+0

@Infinity ответ прав, если вы хотите, как строку, затем вставьте его с помощью', '. +1 для малого и четкого ответа –

0

Если вы хотите сохранить ваш старый Функциональность с echo просто вставьте unset в вашу петлю

$array= array(1, 2, 3, 4, 5, 6); 
for ($i = 0; $i < 4; $i++) { 
    $k = array_rand($array); 
    $random_element = $array[$k]; 

    unset($array[$k]); 

    echo $random_element; 
} 

Но мне больше нравится решение bwoebi.

0
$array= array(1, 2, 3, 4, 5, 6); 
for ($i = 0; $i < 4; $i++) { 
$k = array_rand($array); 

$random_element = $array[$k]; 
unset($array[$k]); 
echo $random_element; 
} 
  1. получить случайное значение из массива
  2. удалить элемент из массива, так что во время следующей итерации мы не будут получать повторяющийся
+0

, пожалуйста, добавьте некоторое объяснение своего кода, показывая, что он делает и как оно решает проблему. Это поможет другим, кто увидит ваш ответ в будущем –

Смежные вопросы