За последние 24 часа нас посетили 8439 программистов и 517 роботов. Сейчас ищет 251 программист ...

замена слов в многомерном массиве

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

  1. oleg46

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

    С нами с:
    14 дек 2012
    Сообщения:
    15
    Симпатии:
    0
    Как можно сделать поиск и замену слов или отдельных букв в многомерном массиве?
    Есть многомерный массив, в котором нужно найти и заменить одну букву на другую, как это реализовать?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.439
    Симпатии:
    1.739
    через рекурсию =)
     
  3. oleg46

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

    С нами с:
    14 дек 2012
    Сообщения:
    15
    Симпатии:
    0
    Скажите еще, через ПХП :)
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.439
    Симпатии:
    1.739
    эм. в чем шутка? не знаете что такое foreach и is_array? проходите в цикле по членам массива, переданного в вашу функцию. Если член массива тоже массив, то передаёте его в вашу функцию, и вот она рекурсия.
     
  5. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Код (PHP):
    1. $array = array(
    2.     'test',  'test2',  'test3',  array('test4', 'test5')
    3. );
    4. function replace_multiarray(&$item, $key){
    5.      $item = str_replace('test5', 'hello 2 level element =)', $item);
    6. }
    7. array_walk_recursive($array, 'replace_multiarray');
    8. print_r($array); 
    Заменит test5 на втором уровне, на строку "hello 2 level element =)"

    До:
    Код (Text):
    1. Array
    2. (
    3.     [0] => test
    4.     [1] => test2
    5.     [2] => test3
    6.     [3] => Array
    7.         (
    8.             [0] => test4
    9.             [1] => test5
    10.         )
    11. )
    После:
    Код (Text):
    1. Array
    2. (
    3.     [0] => test
    4.     [1] => test2
    5.     [2] => test3
    6.     [3] => Array
    7.         (
    8.             [0] => test4
    9.             [1] => hello 2 level element =)
    10.         )
    11. )
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.439
    Симпатии:
    1.739
    ухты круто. надо бы применить =)
     
  7. oleg46

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

    С нами с:
    14 дек 2012
    Сообщения:
    15
    Симпатии:
    0
    спасибо, только сейчас прочитал, но тоже использовал array_walk_recursive, правда использование этой функции осложнилось, в связи с использованием фреймворка F3
     
  8. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.441
    Симпатии:
    62
    Адрес:
    Зеленоград
  9. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Dmitriy A. Arteshuk, спасибо ;)
     
  10. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Как заменить все кроме 'test5'?
     
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    6.524
    Симпатии:
    1.226
    Причём здесь фреймворк и стандартная функция php?