Проблема с созданием массива

часто задаваемые вопросы по программе
Ответить
neseo
Сообщения: 6
Зарегистрирован: 22 янв 2009, 18:51

Проблема с созданием массива

Сообщение neseo » 22 янв 2009, 19:04

Вечер добрый, пхп по чуть чуть начал учить недавно, есть проблема небольшая с реализацией массива

Код: Выделить всё

$data = file("groups.txt");


	do
		{
		$browser->navigate($data[rand(0,count($data)-1)]);
		$browser->wait(1);
			if ($anchor->is_exist_with_inner_text("Join Our Group",true))
			{
				$anchor->click_by_inner_text("Join Our Group",true);
				$browser->wait(1);
				sleep(3);
				}
			else
				{
				$anchor->click_by_inner_text("Request to Join",true);
				$browser->wait(1);
				sleep(3);
				}
			}
	while ($data >= 0);
Идея - файл с урлами groups.txt
Задача - пройтись по всем урлам в файле наугад, нажать на ссылку Join Our Group. Как урлы закончатся - выйти. Что делаю не так? По некоторым урлам ходит по несколько раз, мне же нужно только 1. Как этого избежать? Спасибо за ответы

neseo
Сообщения: 6
Зарегистрирован: 22 янв 2009, 18:51

Сообщение neseo » 22 янв 2009, 20:06

может нужно кому - выполнение цикла, данные берутся по порядку

Код: Выделить всё

$data = file("groups.txt");

echo "Total groups:";
echo count($data);


for($i=0;$i<count($data);$i++)
{ 
	do
		{
		$browser->navigate($data[$i]);
		$browser->wait(1);
			if ($anchor->is_exist_with_inner_text("Join Our Group",true))
			{
				$anchor->click_by_inner_text("Join Our Group",true);
				$browser->wait(1);
				sleep(3);
				}
			else
				{
				$anchor->click_by_inner_text("Request to Join",true);
				$browser->wait(1);
				sleep(3);
				}
			}
	while ($data <= count($data));


}
Интересует как наугад :)

Аватара пользователя
igvard
Site Admin
Сообщения: 241
Зарегистрирован: 31 июл 2008, 22:53

Сообщение igvard » 23 янв 2009, 17:33

удаление в разброс делается следующим образом :

Код: Выделить всё

// читаем 
$data = file("groups.txt"); 
// идём по всему массиву
while (count($r))
{ 
    // получаем номер какой то
    $r = mt_rand(0,count($data)-1);
    // переходим
    $browser->navigate($data[$r]); 
    $browser->wait(1); 
    // удаляем из массива уже использованные данные
    $data = array_splice ( $data, $r);
}
вот и всё :)

neseo
Сообщения: 6
Зарегистрирован: 22 янв 2009, 18:51

Сообщение neseo » 23 янв 2009, 23:21

огромное спасибо, особенно за коменты !! :) в догонку вот еще какой вопрос
есть файл с логином/паролем, разделение идет ;

правильно делаю?

Код: Выделить всё

  $arr = file("propeller\data\logins.txt"); //грузим файл в массив
  list($user,$pass) = explode(";", $arr); //убираем не нужные символы, создаем 2 массива - логин и пароль
Как заставить скрипт залогиниться на каждый акаунт не по порядку, выполнить опредленные действия, выйти и пойти дальше, пока не закончатся логины. вот :) буду очень благодарен за помощь

neseo
Сообщения: 6
Зарегистрирован: 22 янв 2009, 18:51

Сообщение neseo » 24 янв 2009, 14:47

кстати, насколько я понимаю должно быть
while (count($r)>0)
а не просто
while (count($r))

:)

Аватара пользователя
igvard
Site Admin
Сообщения: 241
Зарегистрирован: 31 июл 2008, 22:53

Сообщение igvard » 26 янв 2009, 16:26

можно и так и так на ваш выбор)) работать будет и в том и в том случае :)

Ответить