За последние 24 часа нас посетили 53903 программиста и 1764 робота. Сейчас ищут 911 программистов ...

Помогите разобраться с массивом

Тема в разделе "PHP для новичков", создана пользователем Solonik, 2 дек 2012.

  1. Solonik

    Solonik Активный пользователь

    С нами с:
    2 дек 2012
    Сообщения:
    17
    Симпатии:
    0
    Помогите пожалуйста разобраться с массивом.

    имею массив(исходный код браузера)

    Array
    (
    [0] => db!@yandex.ru 1234567 Sunday-02-December

    [1] => ssdfsf!@sdfsdf 234234 Sunday-02-December

    [2] => dfgdfgdf@fsdfsdg 23423423 Sunday-02-December

    [3] => fgnbgfngfn@sdgfdg 234235345 Sunday-02-December
    )

    такого вида и.т.д.
    Всё это берется из файла каждая строка
    Так вот хотелось бы разбить массив разделитель в данном случае пробел.
    К пример [1] разбить на email, cod, data
    Чтобы отдельно выводить их в документе а не целой строкой.

    Перемучался весь пробовал

    $f = fopen ("11.txt", "a+");
    $files = file( "11.txt" );
    /*
    for ($i=0; $i<count($files); $i++){

    $end = explode(" ", $files[$i]);

    }*/


    Но ни в какую не работает. Подскажите что не так делаю ? Или ткните куда нибудь носом. Гуглить пробовал!!!
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Во первых зачем тебе эта строка
    $f = fopen ("11.txt", "a+");
    ?

    Во вторых, убери ее и раскоментируй свой код

    А какая ошибка, какой у тебя результат?
     
  3. Solonik

    Solonik Активный пользователь

    С нами с:
    2 дек 2012
    Сообщения:
    17
    Симпатии:
    0
    Спасибо убрал лишнюю строку!
    Если результат то такой

    Array ( [0] => [1] =>
    )

    Если поставить
    $end = explode(" ", $files[$i-1]);

    минус единицу
    то берется последний элемент массива и разбивается как надо

    результат такой
    Array
    (
    [0] => fgnbgfngfn@sdgfdg
    [1] => 234235345
    [2] => Sunday-02-December
    [3] =>

    )
    т.е. то что надо, но надо весь массив так разбить!
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А теперь покажи нормально получившийся код.
     
  5. Solonik

    Solonik Активный пользователь

    С нами с:
    2 дек 2012
    Сообщения:
    17
    Симпатии:
    0
    <?php
    $files = file( "11.txt" );

    for ($i=0; $i<count($files); $i++){

    $end = explode(" ", $files[$i]);

    }
    print_r ($end);
    ?>

    Этот вариант выводит Array ( [0] => [1] =>
    )

    Вот этот вариант:
    <?php
    $files = file( "11.txt" );

    for ($i=0; $i<count($files); $i++){

    $end = explode(" ", $files[$i-1]);

    }
    print_r ($end);
    ?>
    Выводит:
    Array
    (
    [0] => fgnbgfngfn@sdgfdg
    [1] => 234235345
    [2] => Sunday-02-December
    [3] =>

    )

    Второй вариант ближе выводит, но он разбивает последний элемент массива!
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Код (PHP):
    1. $files = file("11.txt");
    2. $c = count($files);
    3.  
    4. for ($i=0; $i<$c; $i++)
    5.     $end[]= explode(' ', $files[$i]);
    6.     
    7. print_r ($end);
    8.  
     
  7. Solonik

    Solonik Активный пользователь

    С нами с:
    2 дек 2012
    Сообщения:
    17
    Симпатии:
    0
    Отлично всё работает. СПАСИБО БОЛЬШОЕ!

    Я так понимаю основная ошибка была в строке
    $end[]= explode(' ', $files[$i]);
    [] - добавить ?
    Ведь по сути $c переменная имеет тоже самое.
     
  8. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Да совершенно верно. Ты не указал что переменная массив.

    Это сделано, что бы в цикле не выполнять десятки раз одно и то же действие.
    Так мы получаем количество элементов 1 раз вызвав функцию count.
    Небольшая оптимизация.
     
  9. Solonik

    Solonik Активный пользователь

    С нами с:
    2 дек 2012
    Сообщения:
    17
    Симпатии:
    0
    Получается он определял переменную как sting строка ?
    Вроде как array получалось же ,а значит массив, или это одномерный получался массив ?

    Сейчас же вроде многомерный массив ?

    Извини за тупые вопросы, самый низкий уровень новичка, просто хочется понять.
     
  10. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Да, ты же не указал что это массив.

    Эта запись означает добавить в конец массива $end значение справа от знака равно.
    Результат работы explode массив, в результате получается многомерный массив.

    Да ладно не напрягайся ))
     
  11. Solonik

    Solonik Активный пользователь

    С нами с:
    2 дек 2012
    Сообщения:
    17
    Симпатии:
    0
    Спасибо большое теперь всё понятно. А то всю голову изломал вроде должно работать, а оказывается ошибался)