За последние 24 часа нас посетил 142651 программист и 6284 робота. Сейчас ищут 1952 программиста ...

Своя функция, перемешивания массива

Тема в разделе "PHP для новичков", создана пользователем Dimon2x, 6 сен 2017.

  1. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    Как сделать, что бы цикл не был вечным?

    PHP:
    1. $arr2 = ['Ослик', 'Медоед', 'Волк', 'Кошка', 'Лошадь'];
    2.  
    3. $newArr = [];
    4.  
    5. while(count($newArr) <= count($arr2)) {
    6.     $key = array_rand($arr2);
    7.        
    8.     if(!in_array($arr2[$key], $newArr)) {
    9.         $newArr[] = $arr2[$key];
    10.     }
    11. }
    12.    
    13.  
    14. echo '<pre>';
    15. print_r($newArr);
    16. echo '</pre>';
    Делал так, но потом цикл прерывается, мне надо сделать, что бы он не прерывался.

    PHP:
    1. while(count($newArr) <= count($arr2)) {
    2.     $key = array_rand($arr2);
    3.        
    4.     if(in_array($arr2[$key], $newArr)) {
    5.         break;
    6.     }
    7.    
    8.     else {
    9.         $newArr[] = $arr2[$key];
    10.     }
    11. }
    --- Добавлено ---
    Я вот так сделал, вроде работает.

    PHP:
    1. while(count($newArr) < count($arr2)) {
    2.     $key = array_rand($arr2);
    3.        
    4.     if(!in_array($arr2[$key], $newArr)) {
    5.         array_push($newArr, $arr2[$key]);
    6.     }
    7. }
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.841
    Симпатии:
    1.338
    Адрес:
    Лень
  3. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    А как сделать свою функцию rand?

    У меня идея, можно вывести текущую секунду даты времени

    --- Добавлено ---
    Я знаю про неё, люблю делать велосипеды и костыли.
     
    #3 Dimon2x, 6 сен 2017
    Последнее редактирование: 6 сен 2017
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.841
    Симпатии:
    1.338
    Адрес:
    Лень
    в документации внизу есть посты с велосипедами
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    PHP:
    1. usort($array, function($a, $b) {
    2.     return rand(0, 1);
    3. });