ФорумПрограммированиеPHP для идиотов → Проблема с циклом

Проблема с циклом

  • komyak

    Сообщения: 17 Репутация: N Группа: Кто попало

    Spritz 3 февраля 2010 г. 14:22

    Возникла проблема с циклом. По замыслу данные должны перебираться из $file_of_login, но эта сцу.. не хочет этого делать. Берёт первую строку из переменной для неё делает цикл и встаёт.
    
    <?
    	require('IXR_Library.inc.php');
    
    	$file_of_login='login.txt';
    	$file_text='text.txt';
    	$file_zagolovok = 'zagolovok.txt';
    	$array_text=file($file_text);
    	$array_zagolovok=file($file_zagolovok);
    	$login_array=file($file_of_login);	
    	$taglist='tag, tag, tag';
    	$schet=count($login_array);
    $i=0;
    while ($i<$schet){
    	list($a0, $a1) = explode(":",trim($login_array[$i]));
    	$l_p[$i] = array($a0, $a1);
    	define('LJ_HOST', 'www.livejournal.com');
    	define('LJ_PATH', '/interface/xmlrpc');
    	define('LJ_LOGIN', $l_p[$i][0]);
    	define('LJ_PASSWD', $l_p[$i][1]);
    
    	$ljClient = new IXR_Client(LJ_HOST, LJ_PATH);
    
    if (!$ljClient->query('LJ.XMLRPC.getchallenge')) {
        echo 'Ошибка [' . $ljClient->getErrorpre().'] '.$ljClient->getErrorMessage();
    }else{
        $ljResponse = $ljClient->getResponse();
        $ljChallenge = $ljResponse['challenge'];
        $ljArgs = array();
        $ljArgs['username']       = LJ_LOGIN;
        $ljArgs['auth_method']    = 'challenge';
        $ljArgs['auth_challenge'] = $ljChallenge;
        $ljArgs['auth_response']  = md5($ljChallenge . md5(LJ_PASSWD));
        $ljArgs['ver']            = "1";
        $ljArgs['event']          = iconv('windows-1251', 'UTF-8', $array_text[$i]);
        $ljArgs['subject']        = iconv('windows-1251', 'UTF-8', $array_zagolovok[$i]);
    	$ljArgs['year']=date('Y',(time()+($time_difference*3600)));
    	$ljArgs['mon']=date('m',(time()+($time_difference*3600)));
    	$ljArgs['day']=date('d',(time()+($time_difference*3600)));
    	$ljArgs['hour']=date('H',(time()+($time_difference*3600)));
    	$ljArgs['min']=date('i',(time()+($time_difference*3600)));
        $ljArgs['props']= array(
    							'opt_preformatted' => true,
    							'opt_backdated'    => true,//
    							'taglist'          => iconv('windows-1251', 'UTF-8', $taglist),
    							);
        $ljArgs['security'] = 'public';
        $ljMethod = 'LJ.XMLRPC.postevent';
        if (!$ljClient->query($ljMethod, $ljArgs)) {
        echo 'Ошибка ['.$ljClient->getErrorCode().'] '.$ljClient->getErrorMessage();
        }else{
            $ljResponse = $ljClient->getResponse();
            echo $ljResponse."<br/>";
        }}
    	$i++;
    	}
    ?>
    

    Экспериментировал с while и с for, но смысл происходящего не меняется…
    Подскажите в чём проблема и где обшибся.




  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 3 февраля 2010 г. 14:33, спустя 10 минут 38 секунд

    Перед вайлом вставь:
    print_r($login_array);
    Спустя 22 сек.
    ну и скажи что выведет.
  • komyak

    Сообщения: 17 Репутация: N Группа: Кто попало

    Spritz 3 февраля 2010 г. 14:38, спустя 5 минут 2 секунды

    
    Array
    (
        [0] => логин1:пасс1
    
        [1] => логин2:пасс2
    
        [2] => логин3:пасс3
    
        [3] => логин4:пасс4
    
        [4] => логин5:пасс5
    
        [5] => логин6:пасс6
    )
    

    Массив выводит и я его потом разбиваю explode
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 3 февраля 2010 г. 14:45, спустя 7 минут 26 секунд

    добавь вардамп
    
    while ($i<$schet) {
        var_dump($i, $schet);
    


    и скажи какие результаты вышли
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 3 февраля 2010 г. 14:47, спустя 1 минуту 58 секунд

    я так вообще не понял что скрипт должен делать:
    1. есть строка в переменной.
    2. есть массив.
    Что должен делать скрипт?

    И не выноси лишний код в свои посты. Итак форматирование херовое у кода, смотреть неудобно. так ещё и лишнего дохера.
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 3 февраля 2010 г. 14:50, спустя 2 минуты 53 секунды

    юзай
    foreach()
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 3 февраля 2010 г. 14:50, спустя 20 секунд

    я так вообще не понял что скрипт должен делать
    я даже и не вникал :)
    я в основном в чужой код не вникаю, экономлю свое время и нервы :)
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • komyak

    Сообщения: 17 Репутация: N Группа: Кто попало

    Spritz 3 февраля 2010 г. 14:57, спустя 6 минут 34 секунды

    var_dump($i, $schet);


    В итоге:

    int(0) int(6)
    int(1) int(6)
    int(2) int(6)
    int(3) int(6)
    int(4) int(6)
    int(5) int(6)
    Спустя 99 сек.
    я так вообще не понял что скрипт должен делать
    …….
    я даже и не вникал :)


    Постер в живой журнал.
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 3 февраля 2010 г. 15:02, спустя 5 минут 16 секунд

    adw0rd, я тоже стараюсь не особо вникать в код. Но в данном случае я не про код, а про задачу скрипта. Имею ввиду что нужно получить в результате :)
    Спустя 206 сек.
    komyak, эээ… ну как тебе сказать. Я про цель, наприме:
    есть массив (логин-пароль) и есть строка (просто строка со словами).
    Нужно в цикле перебрать массив на наличие в нем совпадений со строкой.

    Ну или подобный бред :)
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 3 февраля 2010 г. 15:04, спустя 1 минуту 27 секунд

    Дебагь дальше. Цикл правильно и так работает.
  • komyak

    Сообщения: 17 Репутация: N Группа: Кто попало

    Spritz 3 февраля 2010 г. 15:08, спустя 4 минуты 33 секунды

    Имею ввиду что нужно получить в результате :)

    Результат. А если серьёзно, то: имею 3 файла и при цикле должна браться строчка из каждого файла. Потом из всего этого готовим мешанину в виде $ljArgs и отправляем с помощью xmlrpc. Как отправили проверяем результат и отправляем следующие строки.

    Дебагь дальше. Цикл правильно и так работает.

    Ага, работает, но только один раз.
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 3 февраля 2010 г. 15:12, спустя 3 минуты 30 секунд

    Перед ?> поставь print_r($l_p)
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 3 февраля 2010 г. 15:17, спустя 5 минут 6 секунд


    Дебагь дальше. Цикл правильно и так работает.

    Ага, работает, но только один раз.


    Как это? Если
    int(0) int(6)
    int(1) int(6)
    int(2) int(6)
    int(3) int(6)
    int(4) int(6)
    int(5) int(6)
    ?
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • komyak

    Сообщения: 17 Репутация: N Группа: Кто попало

    Spritz 3 февраля 2010 г. 15:20, спустя 3 минуты 2 секунды

    
    (
        [0] => Array
            (
                [0] => логин1
                [1] => пасс1
            )
    
        [1] => Array
            (
                [0] => логин2
                [1] => пасс2
            )
    
        [2] => Array
            (
                [0] => логин3
                [1] => пасс3
            )
    
      и т.д.
    
    )
    

    Как это? Если

    Дык в том то и дело. print_r($l_p) тоже выдаёт что всё разобранно нормально. Х.з. может особенность сервиса, но другие скрипты через этот же протокол работают, почему и подумал что это я где-то объе…я.
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 3 февраля 2010 г. 15:22, спустя 1 минуту 59 секунд

    я если честно не работал с дефайном, но по-моему его нельзя перезаписывать.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!