Сложное удаление "перевёрнутых дублей"

T
На сайте с 28.06.2007
Offline
82
787

<?php

$str="text1 text2 text3
text3 text2 text1
text2 text3 text1
text1 text3 text2
text2 text1 text3
текст5 текст8 текст4
текст1 текст8 текст3
текст8 текст5 текст4
текст1 текст2
текст2 текст1
текст8 текст5 текст4 текст8 текст5 текст4
текст8 текст5 текст4 текст8 текст4 текст5";

$mas=explode("
", $str); //Массив строк

?>

Дальше нужно перемешивать каждую строку и удалять из остальных строк.

Как сделать перемешку строки?

Т.е. чтобы например строка text1 text2 text3 перемешивалась во все варианты text3 text1 text2 и удалялась из массива...

На выходе должно остаться:

text1 text2 text3

текст5 текст8 текст4
текст1 текст8 текст3
текст1 текст2
текст8 текст5 текст4 текст8 текст5 текст4
firefox19
На сайте с 05.11.2009
Offline
34
#1

может быть array_rand поможет? Либо shuffle

Ваши идеи - наша работа (http://yaweb.ru) Продам Сайт агентства недвижимости (/ru/forum/561489)
T
На сайте с 28.06.2007
Offline
82
#2

Спасибо, но эти функции перемешивают в случайном порядке :( А мне нужен определённый порядок :(

Другого решения нет? :(

sashka_
На сайте с 27.01.2010
Offline
103
#3

если будет в строке только три слова то можно

$s= explode(" ",$text);

$tex = $s[0].$s[1].$s[2];

$tex = $s[2].$s[1].$s[0];

ну и т.д или можно ещё както подумать и такое в цикле замутить если больше слов

Знаю PHP, JS, jQuery. Помощь для вашего сайта. (/ru/forum/840509).
BD
На сайте с 22.03.2010
Offline
5
#4
Trol:
Спасибо, но эти функции перемешивают в случайном порядке :( А мне нужен определённый порядок :(
Другого решения нет? :(

function compare($a,$b) {
//функция должна возвращать true, если $a должно стоять в отсортированном массиве раньше $b и false в остальных случаях

}

usort($array, 'compare');
T
На сайте с 28.06.2007
Offline
82
#5

Спасибо, но не то :(

Есть 2 строки:

<?php

$str1="можете выбрать иконку";
$str2="Маша шла по улице";
?>

Нужно получить всевозможные варианты перемешки слов в строке.

Например для первой строки:

можете выбрать иконку

можете иконку выбрать
выбрать можете иконку
выбрать иконку можете
иконку можете выбрать
иконку выбрать можете

Слов в строке может быть как меньше трёх так и больше.

CX
На сайте с 01.06.2010
Offline
15
#6

а если сделать вложенными циклами?

читаешь сколько всего слов и потом делаешь перестановки по очереди

T
На сайте с 28.06.2007
Offline
82
#7

Всем спасибо! Так и решил сделать, через foreach, для каждых n слов своя функция, на выходе которой массив из всех словосочетаний.

AlexStep
На сайте с 23.03.2009
Offline
353
#8

потерто......

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий