Своя сортировка массива

213
12 марта 2017, 08:00

Я хочу, что бы массив был отсортирован случайным образом, я сделал условие, что бы если в массиве такой элемент есть, то он повторно не добавлялся, но почему-то добавляется

<?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);
Answer 1
<?php
$arr = [
    'African elephant',
    'Spotted hyena',
    'Snow leopard',
];
shuffle($arr); 
echo '<pre>'; var_dump($arr); echo '</pre>';
Answer 2
<?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>';
Answer 3

Вот ещё одна реализация. Перевёл с 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));
READ ALSO
Как правильно вставить html в php

Как правильно вставить html в php

Добрейшего вечерочка!

198
Генератор кода Gii в Yii2 [требует правки]

Генератор кода Gii в Yii2 [требует правки]

Добрый вечер, попытался сгенерировать код с помощью Gii в Yii2, в итоге получил такое сообщение:

408
Вывод данных из двух таблиц

Вывод данных из двух таблиц

Просьба помочь в решении следующего вопроса

271
Не выполняется php-код из примера

Не выполняется php-код из примера

Я начал изучать производство сайтов, и первый же пример из книжки не хочет выполняться

215