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

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

  • komyak

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

    Spritz 3 февраля 2010 г. 6: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 г. 6:33, спустя 10 минут 38 секунд

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

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

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


    Array
    (
    [0] => логин1:пасс1

    [1] => логин2:пасс2

    [2] => логин3:пасс3

    [3] => логин4:пасс4

    [4] => логин5:пасс5

    [5] => логин6:пасс6
    )

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

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

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

    добавь вардамп

    while ($i<$schet) {
    var_dump($i, $schet);


    и скажи какие результаты вышли
    adw/0
  • Givi

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

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

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

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

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

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

    юзай
    foreach()
  • adw0rd

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

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

    я так вообще не понял что скрипт должен делать
    я даже и не вникал :)
    я в основном в чужой код не вникаю, экономлю свое время и нервы :)
    adw/0
  • komyak

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

    Spritz 3 февраля 2010 г. 6: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 г. 7:02, спустя 5 минут 16 секунд

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Spritz 3 февраля 2010 г. 7: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)
    ?
    adw/0
  • komyak

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

    Spritz 3 февраля 2010 г. 7: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 г. 7:22, спустя 1 минуту 59 секунд

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

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