Я хочу, что бы массив был отсортирован случайным образом, я сделал условие, что бы если в массиве такой элемент есть, то он повторно не добавлялся, но почему-то добавляется
<?php
error_reporting(-1);
$arr = [
'African elephant',
'Spotted hyena',
'Snow leopard',
];
echo '<pre>';
var_dump($arr);
echo '<pre>';
$new_arr = [];
$count = count($arr);
for($i = 0; $i < count($arr); $i++){
if (in_array($arr[$i], $new_arr)) {
!array_push($new_arr, $arr[rand(0, count($arr)-1)]);
}
else{
array_push($new_arr, $arr[rand(0, count($arr)-1)]);
}
}
var_dump($new_arr);
<?php
$arr = [
'African elephant',
'Spotted hyena',
'Snow leopard',
];
shuffle($arr);
echo '<pre>'; var_dump($arr); echo '</pre>';
<?php
$arr = [
'African elephant',
'Spotted hyena',
'Snow leopard',
];
$arrNew = [];
while (count($arr) > 0) {
$key = array_rand($arr);
$arrNew[] = $arr[$key];
unset($arr[$key]);
}
echo '<pre>'; var_dump($arrNew); echo '</pre>';
Вот ещё одна реализация. Перевёл с Java.
<?php
function shuffle_array($arr){
for($i = count($arr) - 1; $i > 0; $i--){
$index = mt_rand(0, $i);
$val = $arr[$index];
$arr[$index] = $arr[$i];
$arr[$i] = $val;
}
return $arr;
}
$arr = [
'African elephant',
'Spotted hyena',
'Snow leopard',
];
var_dump(shuffle_array($arr));
Сборка персонального компьютера от Artline: умный выбор для современных пользователей