Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Array + Rand + Unset = Error

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Инсеин
Отправлено: 06 Января, 2013 - 02:45:36
Post Id



Новичок


Покинул форум
Сообщений всего: 61
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Доброе время суток!
Возможно, в названии не совсем правильно описал суть проблемы, но не знал, как более точно передать смысл.
Изначально была задача в следующем …
Есть список чисел от 1 до 25 вот из них надо рандомно выбрать пять чисел, но так чтобы они не повторялись. Решил сделать массив этих самых чисел и тем же Rand() выбирать из этого массива пять раз, всё как бы хорошо, но чтобы избежать повтора после каждого выбора через unset удалял выбранное число из массива и сокращал диапазон для выбора (ну, массив же короче становился). Всё показалось правильным, но в результате начал получать периодически вместо пяти чисел 4 или иногда даже 3. Вот уже час не могу понять, что не так, по сему решил спросить или я чего-то недопонимаю или что-то просмотрел (хотя сомневаюсь в этом Улыбка).
А вот и сама функция:
PHP:
скопировать код в буфер обмена
  1.  
  2. function newNum()
  3. {
  4.         $numArray = array (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25);
  5.        
  6.         $num1 = $numArray[rand(0,24)];
  7.         unset($numArray[$num1-1]);
  8.        
  9.         $num2 = $numArray[rand(0,23)];
  10.         unset($numArray[$num2-1]);
  11.        
  12.         $num3 = $numArray[rand(0,22)];
  13.         unset($numArray[$num3-1]);
  14.        
  15.         $num4 = $numArray[rand(0,21)];
  16.         unset($numArray[$num4-1]);
  17.        
  18.         $num5 = $numArray[rand(0,20)];
  19.        
  20.         echo $num1.' '.$num2.' '.$num3.' '.$num4.' '.$num5;
  21. }
  22.  


-----
Судя по ходу мыслей, вас постоянно преследуют глупости.
 
 Top
LIME
Отправлено: 06 Января, 2013 - 02:50:45
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




массив не сдвигается, то есть остаются "пустоты"
var_dump не судьба?
 
 Top
Инсеин
Отправлено: 06 Января, 2013 - 03:43:36
Post Id



Новичок


Покинул форум
Сообщений всего: 61
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




LIME пишет:
массив не сдвигается, то есть остаются "пустоты"
var_dump не судьба?

Мда ... действительно так Недовольство, огорчение
Просто рассматривал массив через print_r и там всё норм было Улыбка
Ну, что ж ... видимо без цикла не обойтись, всё же Недовольство, огорчение


-----
Судя по ходу мыслей, вас постоянно преследуют глупости.
 
 Top
LIME
Отправлено: 06 Января, 2013 - 03:47:24
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




 
 Top
Инсеин
Отправлено: 06 Января, 2013 - 04:19:13
Post Id



Новичок


Покинул форум
Сообщений всего: 61
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Спасибо


-----
Судя по ходу мыслей, вас постоянно преследуют глупости.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB