перемешиваем массивы одним алгаритмом, реально ли?

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

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

    guru85 Постоялец

    Регистр.:
    24 мар 2010
    Сообщения:
    134
    Симпатии:
    3
    срочно нужно знать, можно ли перемешать, разные элементы массива в разных переменных одним алгоритмом? допустим имеем три переменные содержащие по 10 элементов массива, поочередно взяв первые элементы из переменных имеем нужное значение, необходимо случайнам образом перемешать эти элементы так, чтобы взяв элементы из массива не потерялась связь между переменными.
     
  2. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
  3. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Интересно, что имелось в виду :)
    Даже не понимая вопроса, осмелюсь предположить, что такой встроенной функции нет. Создавай временный массив и уже его с помощью
    PHP:
    shuffle();
    Вычитал все-таки вопрос:
    Ответ: да, можно!
     
  4. guru85

    guru85 Постоялец

    Регистр.:
    24 мар 2010
    Сообщения:
    134
    Симпатии:
    3
    я сам завис, но мне надо вот такую штуку
    PHP:
    $fruits = array("lemon""orange""banana""apple");
    $fruits1 = array("желтый""ораньживай""банан""красный");
    $fruits2 = array("кислый""сладкий""мягкий""сочное");
    а после перемешивания получить
    PHP:
    $fruits = array("orange""banana""lemon",  "apple");
    $fruits1 = array("ораньживай""банан""желтый",  "красный");
    $fruits2 = array("сладкий""мягкий""кислый",  "сочное");
    и на выходе получаем в первом и во втором разное но соответствующее
    PHP:
    echo $fruits[0]
    echo 
    $fruits1[0]
    echo 
    $fruits2[0]
    и если не сложно то примерчик.
     
  5. Maza

    Maza

    Регистр.:
    3 июл 2007
    Сообщения:
    255
    Симпатии:
    118
    Еле с трудом понял )
    Объедини в один массив потом как gres_18 написал сделай, а потом explode дели.
     
  6. guru85

    guru85 Постоялец

    Регистр.:
    24 мар 2010
    Сообщения:
    134
    Симпатии:
    3
    как правильно их объединить? чтоб не чего не сбилось? может быть я иду не верным путем, изначально мне необходимо перемешать вот что, я использую класс для rss $xml = new SimpleXMLElement($rssurl, NULL, TRUE); и при парсинге получаю заголовки описания и т.д. но при постиге в свой рес мне необходимо перемешать данные от туда не теряя соответсвий заголовков непосредственно к постам. просто перемешав массив с тайтлами и постами все собьется. надо мешать их одни алгоритмом.
     
  7. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Как я понимаю,все проще чем казалось. Нужно просто перемешать все массивы по отдельности. Можно как-то так попробовать:
    PHP:
    $fruits = array("lemon""orange""banana""apple");
    $fruits1 = array("желтый""ораньживай""банан""красный");
    $fruits2 = array("кислый""сладкий""мягкий""сочное");
    shuffle($fruits);
    shuffle($fruits1);
    shuffle($fruits2);
    print 
    $fruits[0].' ';
    print 
    $fruits1[0].' ';
    print 
    $fruits2[0].' ';
     
  8. guru85

    guru85 Постоялец

    Регистр.:
    24 мар 2010
    Сообщения:
    134
    Симпатии:
    3
    нет на выходе apple красный мягкий это не то. вот вроде получилось
    PHP:
    $fruits = array("lemon""orange""banana""apple");
    $fruits1 = array("желтый""ораньживай""банан""красный");
    $fruits2 = array("кислый""сладкий""мягкий""сочное"); 
    $fruitsmass=array($fruits ,$fruits1,$fruits2 );
    shuffle($fruitsmass);
    echo  
    $fruitsmass[0][0];
    echo  
    $fruitsmass[1][0];
    echo  
    $fruitsmass[2][0];

    echo  
    $fruitsmass[0][1];
    echo  
    $fruitsmass[1][1];
    echo  
    $fruitsmass[2][1];
     
  9. VandJ

    VandJ

    Регистр.:
    8 апр 2008
    Сообщения:
    318
    Симпатии:
    113
    PHP:
    $fruits = array("orange""banana""lemon",  "apple");
    $fruits1 = array("ораньживай""банан""желтый",  "красный");
    $fruits2 = array("сладкий""мягкий""кислый",  "сочное"); 
    for(
    $i=0$i<count($fruits); $i++){ 
     
    $array = array ($fruits[$i],$fruits1[$i],$fruits2[$i]); 
    shuffle($array); 
    echo 
    $array[0].' ';
    echo 
    $array[1].' ';
    echo 
    $array[2].'<br>';
    }
     
  10. guru85

    guru85 Постоялец

    Регистр.:
    24 мар 2010
    Сообщения:
    134
    Симпатии:
    3
    все же не получилось вот что мне надо, имея массивы
    PHP:
    $fruits = array("title""title1""title2""title3");
    $fruits1 = array("des""des1""des2""des3");
    $fruits2 = array("thumb""thumb1""thumb1""thumb3"); 
    на выходе вызывая первый элемент получить либо
    PHP:
    title des thumb
    либо
    PHP:
    title1 des1 thumb1
    либо
    PHP:
    title3 des3 thumb3