Как из массива вывести несколько случайных элементов?

Тема в разделе "PHP", создана пользователем Ragger, 26 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Ragger

    Ragger

    Регистр.:
    14 июн 2008
    Сообщения:
    167
    Симпатии:
    183
    Как из обычного массива несколько случайных (допустим 5) элементов?
     
  2. vivid

    vivid Постоялец

    Регистр.:
    13 апр 2009
    Сообщения:
    143
    Симпатии:
    18
    PHP:
    function get_random_item($arr){
      return 
    $arr[rand(0,count($arr)-1];
    }
    и эту ф-цию пять раз или сколько угодно раз
     
  3. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    Ragger нравится это.
  4. Ragger

    Ragger

    Регистр.:
    14 июн 2008
    Сообщения:
    167
    Симпатии:
    183
    Спасибо, с выводом разобрался, еще вопрос:
    PHP:
    $tabletka "viagra";
    $arr = array
    (
    'all about $tabletka',
    'purchase $tabletka',
    'buy $tabletka',
    'order $tabletka',
    'online $tabletka',
    );

    echo 
    $arr[0];
    Выводит all about $tabletka
    Почему переменная не подставляется?
     
  5. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    переменная подставляется только если кавычки двойные, ". либо так 'all about '.$tabletka,
     
    Ragger нравится это.
  6. 1d37r

    1d37r Читатель

    Заблокирован
    Регистр.:
    16 сен 2007
    Сообщения:
    287
    Симпатии:
    48
    одинарная ковычка съедает переменные, т.е. она отображает текст такой какой он есть.
     
  7. ZyXEL

    ZyXEL Создатель

    Регистр.:
    13 янв 2007
    Сообщения:
    41
    Симпатии:
    16
    Зачем дубли плодить, думаю проще будет

    PHP:
    $tabletka "viagra";
    $arr = array ('all about''purchase''buy''order''online');

    echo 
    $arr[0].' '.$tabletka;
     
  8. vivid

    vivid Постоялец

    Регистр.:
    13 апр 2009
    Сообщения:
    143
    Симпатии:
    18
    можно воспользоваться ф-цией eval. в привиденом вами случае значение строчек с двойной кавычкой вычисляются сразу же - это не lazy computing, не ленивые вычисления. что б явно вычислить строчку позже надо воспользоваться ф-цией eval
    PHP:
    eval('$str="$arr[0]"');
    теперь $str будет содержать всё что надо, мы подготовили строчку для интерпретатора в рантайме и вычислили ее, а в массиве $arr естественно строки должны быть в одинарных кавычках, либо знак доллара чтоб был экранирован
     
  9. x00xer

    x00xer Создатель

    Регистр.:
    30 мар 2009
    Сообщения:
    29
    Симпатии:
    2
    а еще вроде бы если в строке используется переменная то можно ее переменную в фиг. скобки засунуть
    'bla bla {$a} bla ' ...
     
  10. vivid

    vivid Постоялец

    Регистр.:
    13 апр 2009
    Сообщения:
    143
    Симпатии:
    18
    фигурные скобки необходимы кода след символ может быть проинтерпретирован как символ названия переменной, или для обращений по индексу или по полю обьекта ({$var1}_{$var2}, {$arr[0]}, {$obj->field}) тогда использование фигурных скобок обязательно.


    $var = 'bla bla {$a} bla ';
    print $var; // bla bla bla {$a} bla
    $a = 'hello'
    eval('$str = "$var"');
    print $str; // bla bla bla hello bla


    хотя если таблетка установливается один раз то можно остановиться на след легкой имплементации

    PHP:
    function get_random_string($tabletka){
     
      
    $arr = array
    (
    "all about $tabletka"// именно двойные кавычки чтоб каждый раз этот массив инициализировался с новой таблеткой
    "purchase $tabletka",
    "buy $tabletka",
    "order $tabletka",
    "online $tabletka",
    );

    return 
    $arr[array_rand($arr) ];
    }
     
Статус темы:
Закрыта.