нужна помощь с array_rand

Тема в разделе "PHP", создана пользователем leshin, 21 янв 2011.

Модераторы: latteo
  1. leshin

    leshin

    Регистр.:
    4 май 2007
    Сообщения:
    221
    Симпатии:
    65
    Есть такой скрипт:
    PHP:
    function Script(){
        global 
    $delta;
        if (isset(
    $delta)) {return $delta[array_rand($delta)];} else
        {return 
    "";}
    }
    код для $delta
    PHP:
        if (is_file("links.txt")){
            
    $delta=file("links.txt");
        } else
        {
            
    $delta="";
        }
    функция выполняет выбор случайной ссылки из файла links.txt.
    Помогите изменить функцию Script так, чтобы выбиралась случайно не одна ссылка, а сразу 3 и все случайно. Спасибо.
     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    PHP:
    function Script(){
        global 
    $delta;
        if (isset(
    $delta)) {
    for(
    $i=1$i<=3$i++;){
    $ard[$i]=$delta[array_rand($delta)];}
    return 
    $ard;} else
        {return 
    "";}
    }
    а потом циклом foreach вытянешь все 3 ссылки из массива $ard
     
  3. nulldamned

    nulldamned Создатель

    Регистр.:
    11 ноя 2006
    Сообщения:
    28
    Симпатии:
    22
    все таки лучше использовать красивое решение, чем циклы, тем более функция array_rand это позволяет:
    PHP:
    function Script(){
        global 
    $delta;
        if (isset(
    $delta)) {
    $ard=$delta[array_rand($delta,3)]; // второй параметр указывает какое количество элементов вернуть
    return $ard;} elsу
        
    {return "";}
    }
     
  4. leshin

    leshin

    Регистр.:
    4 май 2007
    Сообщения:
    221
    Симпатии:
    65
    выдает ошибку Illegal offset type для строки:
    $ard=$delta[array_rand($delta,3)];
     
  5. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Правильно ругается...В результате у тебя получается дето такое выражение $ard=$delta[1, 30, 15];
    оставь так:
    PHP:
    function Script(){
        global 
    $delta;
        if (isset(
    $delta)) {
    $ard=array_rand($delta,3); // второй параметр указывает какое количество элементов вернуть
    return $ard;} else
        {return 
    "";}
    }  
    $ard - это массив случайных ключей
    А в месте где у тебя ссылки выкладываются выложи их циклом
    PHP:
    foreach($ard as $key=>$value){
    echo 
    $delta[$value];
    }