Работа с масивом

Тема в разделе "PHP", создана пользователем Smile, 10 июн 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Smile

    Smile Нарушитель

    Регистр.:
    12 ноя 2006
    Сообщения:
    157
    Симпатии:
    11
    Нужна помощь, есть строка примерно такого типа:

    раз два три четыре пять

    как сделать чтоб после каждого слова поставить запятую...

    пробывал так:

    Код:
    $buffer = "раз два три четыре пять";
    $arr = explode(" ", $buffer);
     
    $count_arr = count($arr);
    
    for($i=0;$i<$count_arr;$i++)
    {
        list($a) = $arr[$i];
        $final .= $a.",";
    }
    
    echo "$final";
    
    выдает примерно такой результат...

    р,д,т,ч,п

    тоесть только 1 букву, что я не правельно сделал ?
     
  2. Dj_StelS

    Dj_StelS

    Регистр.:
    9 янв 2009
    Сообщения:
    349
    Симпатии:
    79
    PHP:
    $buffer "раз два три четыре пять";
    $buffer preg_replace("[ ]",", ",$buffer);
    echo 
    $buffer;
     
    Smile нравится это.
  3. Smile

    Smile Нарушитель

    Регистр.:
    12 ноя 2006
    Сообщения:
    157
    Симпатии:
    11
    спс, а если в буфере есть запятая, как убрать ?

    к примеру $buffer = "раз два, три, четыре пять";

    выдаст: раз, два,, три,, четыре, пять

    как сделать чтоб только 1 запятая была ?
     
  4. Dj_StelS

    Dj_StelS

    Регистр.:
    9 янв 2009
    Сообщения:
    349
    Симпатии:
    79
    PHP:
    $buffer "раз два, три, четыре пять";
    $buffer preg_replace("[ ]",", ",$buffer);
    $buffer preg_replace("[,, ]"", ",$buffer);
    echo 
    $buffer;
     
    Smile нравится это.
  5. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Зачем все так усложнять, когда можно проще?

    PHP:
    $buffer "раз два, три, четыре пять";
    $buffer str_replace(array(','' '),array('',', '),$buffer);
    echo 
    $buffer;
     
    Dj_StelS нравится это.
  6. Dj_StelS

    Dj_StelS

    Регистр.:
    9 янв 2009
    Сообщения:
    349
    Симпатии:
    79
    Оо незнал что в регулярку можно запихнуть массив, спасибо, приму к свединью...:)
     
  7. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    а вот еще вариант:

    PHP:
    $buffer "раз два, три, четыре пять"
    $buffer implode (','explode (' 'str_replace(',''',$buffer))); 
    echo 
    $buffer;  
     
  8. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    Оо незнал что в str_replace префикс str не говарит о том что она вобще не принемает регулярные выражения :D:ay:

    str_replace - принемет масивы с данными символов но ни как не регулярных выражений !!!

    Добавлено через 5 минут
    diavolic

    PHP:
    $buffer "раз два, три, четыре пять"
    $buffer implode (','explode (' 'str_replace(',''',$buffer))); 
    echo 
    $buffer
    ага ! А что если $buffer = "раз два,три, четыре пять"; ???? :smmne: Недодумал....

    Добавлено через 9 минут
    Тогда уж так....

    PHP:
    <?php
    $buffer 
    "раз два,три, четыре пять";
    $buffer implode (','explode (' 'str_replace(array(',''  '' '), array(' '' '','),$buffer)));
    echo 
    $buffer;
    ?>
    Добавлено через 12 минут
    Хотя моя поправка тоже кривая ))
    $buffer = "раз два ,три, четыре пять";
    Уэе тупит....

    Добавлено через 56 минут
    Сходил в энное место... Подумал... :nezn: Вроде все учел.

    PHP:
    <?php
    $buffer 
    'раз                                 два ,            три,четыре пять,   ,  ,,,, шесть,';
    $buffer=explode(' 'str_replace(','' 'trim($buffer)));
    $sizeof=sizeof($buffer);

    $new_buffer='';
    for (
    $i=0$i<$sizeof$i++)
    {
        if (
    $buffer[$i]!='')
        {
            
    $new_buffer.=$buffer[$i];
            if ((
    $i+1)!=$sizeof$new_buffer.=',';
        }
    }
    $buffer=$new_buffer;
    unset(
    $new_buffer);

    echo 
    $buffer;
    ?>


    ---------- Post added at 22:03 ---------- Previous post was at 20:56 ----------

    Smile
    Вы непонятно зачем использовали функцию list

    (
    list($a) = $arr[$i];
    )

    Она вам там точно ненужна была.
    То что у вас вышло наверно эффект того что к строке можно обратится как масиву номер ключа будит номером символа (вернее наоборот )) )

    А вобще именно то что вы хотели воплотить вобще можно было сделать так.

    PHP:
    <?php
    $buffer 
    'раз два три четыре пять';
    $buffer implode(','explode(' '$buffer));
    echo 
    $buffer;
    ?>
    Да и перестаньте на право и на лево ставить " либо ' либо . соединяйте... Я вобще их только для \r\n\t использую :)
     
Статус темы:
Закрыта.