За последние 24 часа нас посетили 38397 программистов и 1283 робота. Сейчас ищут 1027 программистов ...

Разбор данных из БД

Тема в разделе "PHP для новичков", создана пользователем darkgod, 26 май 2009.

  1. darkgod

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

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    Доброго времени суток всем!

    Появился вопрос...
    В базе есть поле, со значением home|info|file|news|filesnews|newsinfo

    Подскажите как мне разобрать эту строку? чтобы это были как бы отдельные слова...
    И если я сравниваю например так: if($files == 'file') то чтобы доставалось слово file, но если есть слово filesnews, то оно не берется, т.к. это другое слово.
     
  2. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    PHP:
    1. <?php
    2.  
    3. $old_string  = 'home|info|file|news|filesnews|newsinfo';
    4. $string    = array();
    5.  
    6. $string = explode('|', $old_string);
    7.  
    8. ?>
     
  3. darkgod

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

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    вроде работает, но не до конца... вытаскивается только info


    Делал так:
    $old_string = 'home|info|file|news|filesnews|newsinfo';
    $string = array();
    $string = explode('|', $old_string);


    if($string[1] == 'file') {
    echo '1';}

    Или я не правильно делаю?
     
  4. PetrOFF

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

    С нами с:
    13 май 2009
    Сообщения:
    102
    Симпатии:
    0
    $old_string = 'home|info|file|news|filesnews|newsinfo';
    $string = array();
    $string = explode('|', $old_string);
    print_r($string);

    И глянь с кокого индекса начинается массив :)
     
  5. darkgod

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

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    print_r выводит мне весь массив вместе с array, хотя мне его вывод там ненужен... без print_r можно еще как нибудь?
     
  6. El Loco

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

    С нами с:
    26 дек 2008
    Сообщения:
    41
    Симпатии:
    0
    функция explode возвращает тебе массив, элементам которого соответствуют индексы (0,1,2,3...).
    у тебя была строка: 'home|info|file|news|filesnews|newsinfo'
    получен массив string:
    индекс | значение элемента
    0 | home
    1 | info
    2 | file
    3 | news
    4 | filesnews
    5 | newsinfo

    пример:
    PHP:
    1. <?
    2. if($string[2] == 'file') {
    3. echo '1';}
    4. ?>
    этот вариант сработает.
     
  7. Nexus

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

    С нами с:
    26 май 2009
    Сообщения:
    19
    Симпатии:
    0
    Код (Text):
    1. <?php
    2. $a = 'home|info|file|news|filesnews|newsinfo';
    3.  
    4. $a = explode('|',$a);
    5.  
    6. for($i = 0; $i < count($a); $i++)
    7. {
    8.     echo '<b>'.$i.' = '.$a[$i].'<br />';
    9. }
    10. ?>
     
  8. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Nexus

    PHP:
    1. <?php
    2.  
    3. foreach($array as $key => $value) {
    4.     //TODO: ...
    5. }
    6.  
    7. ?>
    PHP:
    1. <?php
    2.  
    3. while(list($key, $value) = each($array)) {
    4.     //TODO: ...
    5. }
    6.  
    7. ?>
    Оба варианта предпочтительней в большинстве случаев, чем вам выше.
     
  9. Nexus

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

    С нами с:
    26 май 2009
    Сообщения:
    19
    Симпатии:
    0
    print_r($массив); предназначен для вывода всего массива на экран, так ты можешь узнать в у какого слова какой ключ.. что бы выводить соответствующие данные
    echo $a['0']; // Выведет home
    echo $a['1']; // Выведет info
    echo $a['2']; // Выведет file
    echo $a['3']; // Выведет news
    echo $a['4']; // Выведет filesnews
    echo $a['5']; // Выведет newsinfo

    а ваще если вы будете каждый возникший вопрос задавать на форуме... то ваш мозг деградирует и вы никогда не поймете и не выучите РНР.. и не сможете решать оч сложные задачи которые тут на форуме вам решать не станут бесплатно низачто =)
     
  10. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    А это ещё что за кавычки такие для массива с числовыми индексами?
     
  11. Nexus

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

    С нами с:
    26 май 2009
    Сообщения:
    19
    Симпатии:
    0
    Apple тоже верно.. но это не для новичков =)
    кавычки - привычка... ему всеравно, + мне нравится как это красивей выглядит в редакторе в котором я программлю ;)
     
  12. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    И тем самым заставлять РНР делать лишние операции по преобразованию типов?
    Ассоциативные массивы имеют строковые индексы и РНР приходится при обращении преобразовывать переданный индекс в число и после извлекать значение массива из памяти.
    Это бессмысленные и неоправданные операции с технической стороны.
     
  13. Nexus

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

    С нами с:
    26 май 2009
    Сообщения:
    19
    Симпатии:
    0
    спасибо учту =)
     
  14. vital

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

    С нами с:
    18 дек 2006
    Сообщения:
    162
    Симпатии:
    0
    Адрес:
    Минск
    гм... гламурненько :roll: