За последние 24 часа нас посетили 17962 программиста и 1651 робот. Сейчас ищут 1412 программистов ...

Умный rnd() и последовательный выбор строк из массива

Тема в разделе "PHP для новичков", создана пользователем FRiK, 22 май 2008.

  1. FRiK

    FRiK Активный пользователь

    С нами с:
    16 май 2008
    Сообщения:
    20
    Симпатии:
    0
    Адрес:
    Нижний Новгород
    Есть 2 вопросика.
    Первый: как-нибудь можно организовать умный рандом? :) Т.е. есть, например, 100 чисел, из которых нужно выводить в разных местах по 10 чисел рандомно и так, чтобы они не повторялись :) Можно ли такое организовать?
    Второй: Есть массив, который был получен из mysql базы, в нем куча строк и несколько столбцов. Каким образом брать, допустим, первую строку из первого столбца и выводить его, потом вторую строку из первого столбца и так далее. Что то типа $array[0][$i], где $i - номер строки.
    Вот такие глупые вопросы новичка :)
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    В поиск. Решение приводилось.
     
  3. FRiK

    FRiK Активный пользователь

    С нами с:
    16 май 2008
    Сообщения:
    20
    Симпатии:
    0
    Адрес:
    Нижний Новгород
    Ага, про рэндом нашел. Как насчет второго вопроса? Он более актуален.
     
  4. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. <?php
    2. foreach ($items as $item) {
    3.     foreach ($item as $v) {
    4.         print $v . ' ';
    5.     }
    6.  
    7.     print '<br />';
    8. }
     
  5. BS

    BS Активный пользователь

    С нами с:
    10 апр 2008
    Сообщения:
    149
    Симпатии:
    0
    PHP:
    1. $yourNumbers = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14);
    2. $choosenNumbers = array();
    3. for ($i=1; $i<=10; $i++){
    4.     while(in_array($n=$yourNumbers[rand(0,count($yourNumbers)-1)],$choosenNumbers));
    5.     $choosenNumbers[]=$n;
    6.     echo($i.'  '.$n.'<br>');   
    7. }
     
  6. BS

    BS Активный пользователь

    С нами с:
    10 апр 2008
    Сообщения:
    149
    Симпатии:
    0
    блин, пока писал, все уже ответили :)
     
  7. FRiK

    FRiK Активный пользователь

    С нами с:
    16 май 2008
    Сообщения:
    20
    Симпатии:
    0
    Адрес:
    Нижний Новгород
    BS, ага, спасибо :)
    Sergey89, не понятно немного. $items это мой массив. $item и $v я называю сам как хочу? Попробовал этот вариант, говорит - Invalid argument supplied for foreach() . Где я не прав?
     
  8. BS

    BS Активный пользователь

    С нами с:
    10 апр 2008
    Сообщения:
    149
    Симпатии:
    0
    FRiK а как у тебя строки и столбцы хранятся?
     
  9. NOmeR1

    NOmeR1 Активный пользователь

    С нами с:
    11 май 2008
    Сообщения:
    97
    Симпатии:
    0
    Очень "Умный rand" :D
    Код (Text):
    1. <?php
    2. function my_rand($from, $to, &$array) {
    3.     $rand = rand($from, $to);
    4.     if(in_array($rand, $array)) {
    5.         return my_rand($from, $to, $array);
    6.     } else {
    7.         $array[] = $rand;
    8.         return $rand;
    9.     }
    10. }
    11. $array = array();
    12. echo 'Мне '.my_rand(1, 20, $array).', моему брату - '.my_rand(1, 20, $array).', сестре - '.my_rand(1, 20, $array).', другу - '.my_rand(1, 20, $array).', а подруге - '.my_rand(1, 20, $array).'.';
    13. ?>
     
  10. FRiK

    FRiK Активный пользователь

    С нами с:
    16 май 2008
    Сообщения:
    20
    Симпатии:
    0
    Адрес:
    Нижний Новгород
    BS, а все, уже не надо :) Сделал, спасибо.