Рандомная замена (пхп код)

G
На сайте с 03.07.2007
Offline
16
587

srand(microtime()*1000000);

$a1=array('1a','1b');
$a2=array('2a','2b','2f');
$a3=array('3a','3b','3c','3e');

$rnd1 = $a1[array_rand($a1)];
$content = str_replace('1', $rnd1, $content);
$rnd2 = $a2[array_rand($a2)];
$content = str_replace('2', $rnd2, $content);
$rnd3 = $a3[array_rand($a3)];
$content = str_replace('3', $rnd3, $content);

В результате работы при нахождении в коде единицы, скрипт заменяет все единицы на одно из указанных значений , с двойками и тройками аналогично... Нужно чтобы при нахождении каждый раз рандомом выбирал значение из общего списка, в моем случае для всех единиц подставляется одно ранее выбранное значение...

И на сколько сильнее будет грузится проц сервера, если значений 200-300?

Заранее спасибо.

AVV
На сайте с 31.07.2006
Offline
84
AVV
#1

goox, я на php не работаю, только на perl, но думаю, если правильно понял вопрос, то нужно объединить все три массива в один, и чуть подправить код. И всё.

goox:

И на сколько сильнее будет грузится проц сервера, если значений 200-300?

Практически ни насколько.

D
На сайте с 14.01.2007
Offline
153
#2

единственное, что мне в голову лезет - разбить $content на array и потом тупо foreach. но выглядит это блин как-то не очень...

AVV, если я правильно ТС понял то надо на разные значения заменить, а не на одно

R
На сайте с 03.07.2006
Offline
214
#3

а что если сделать так:

$i=0;

$x=200; //вместо 200 указать кол-во значений

$array=array();

while ($i<=$x)

{

$array[$i]=$content;

$i++;

}

// теперь рандомно выбираешь $i и выводишь значение масива:

echo $array[$i];

D
На сайте с 14.01.2007
Offline
153
#4
rengen:
а что если сделать так:
$i=0;
$x=200; //вместо 200 указать кол-во значений
$array=array();
while ($i<=$x)
{
$array[$i]=$content;
$i++;
}
// теперь рандомно выбираешь $i и выводишь значение масива:
echo $array[$i];

создавать 200 копий контента? зачем?

R
На сайте с 03.07.2006
Offline
214
#5

Dinozavr, Я так понимаю контент уникальный, иначе зачем его рандомно выбирать?

R
На сайте с 03.07.2006
Offline
214
#6

Допёр, сори :)

Kolyaj
На сайте с 28.03.2006
Offline
69
#7

goox,


$a = array(
'1' => array('1a', '1b'),
'2' => array('2a', '2b', '2f'),
'3' => array('3a', '3b', '3c', '3e')
);

function callback($matches) {
global $a;
$match_array = $a[$matches[1]];
return $match_array[array_rand($match_array)];
}

$content = preg_replace_callback("/(" . implode("|", array_keys($a)) . ")/", "callback", $content);
AVV
На сайте с 31.07.2006
Offline
84
AVV
#8

Dinozavr, rengen, можно попробовать вынести код в отдельную функцию (подпрограмму), а затем, с помощью регулярных выражений провертяь начичие в контенте элементов, подлежащих замене, и запускать ее несколько раз, пока все единицы, двойки и тройки не будут последовательно заменены.

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