2010-04-08 2 views
2

У кого-нибудь есть идеи, почему shuffle() вернет только 1 элемент?php shuffle() возвращает один элемент

при использовании:

$array2 = shuffle($array1); 

со следующим массивом ($ массив1):

Array 
(
    [0] => 1 
    [1] => 5 
    [2] => 6 
    [3] => 7 
    [4] => 8 
    [5] => 10 
    [6] => 11 
    [7] => 12 
    [8] => 13 
    [9] => 14 
) 

Выход:

print_r($array2); 

просто:

Любая идея относительно того, почему это не только не перетасовать массив, а сбить оставшиеся 9 элементов в массиве?

спасибо!

ответ

7

shuffle() перемещает массив на место и возвращает true, если это удалось. Если вы хотите $array2 быть перемешиваются версия $array1, сначала сделать его копию $array1, а затем вызвать shuffle($array2);

Смотрите документацию: shuffle

+0

Итак, в чем смысл перетасовывать его, если он собирается просто вернуть true/false? – mike

+1

Я не думаю, что вы понимаете. Он перемещается * на место *. Если вы напечатали '$ array1' вместо' $ array2' в своем коде, вы получили бы перетасованную версию. –

+0

Вы правы. Я не понял. Идеальный смысл! Благодаря! – mike

1

Пожалуйста, прочтите описание функции перед использованием http://php.net/shuffle он может работать, кроме вы ожидаете.

2

shuffle изменяет исходный массив. Поэтому в вашем случае перетасованный массив - $array1.

$array2 - просто логическое значение. Функция возвращает true или false.

1
$array2 = $array1; 
shuffle($array2); 
print_r($array2); 
Смежные вопросы