Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: preg_replace

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (4): [1] 2 3 4 »   

> Описание: добавить некий текст к элементу массива
Belohalatny
Отправлено: 14 Декабря, 2011 - 21:15:47
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Всем привет!

есть у меня массив, в котором есть элементы вида:
CODE (html):
скопировать код в буфер обмена
  1. [0] => 744/149
  2. [1] => 743/140
  3. [2] => 742/118
  4. [3] => 741/118
  5. [4] => 740/112
  6. [5] => 739/112


А мне нужно подставить в начало каждого элемента base/au/3/, чтобы получилось так:
CODE (html):
скопировать код в буфер обмена
  1. [1] => base/au/3/743/140
  2. [2] => base/au/3/742/118
  3. [3] => base/au/3/741/118
  4. [4] => base/au/3/740/112
  5. [5] => base/au/3/739/112


Подскажите, пожалуйста, как сделать?
 
 Top
DlTA
Отправлено: 14 Декабря, 2011 - 21:53:59
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




PHP:
скопировать код в буфер обмена
  1. foreach($heveArray as $key=>$item){
  2.   $heveArray[$key] = "base/au/3/".$item;
  3. }

(Отредактировано автором: 14 Декабря, 2011 - 21:54:44)

 
 Top
Belohalatny
Отправлено: 14 Декабря, 2011 - 22:48:52
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Да, с одним массивом получилось, а вот как сделать, если их много (более 100 таких), не могу врубиться...

CODE (html):
скопировать код в буфер обмена
  1.     [0] => Array
  2.         (
  3.             [0] => Array
  4.                 (
  5.                     [1] => Array
  6.                         (
  7.                             [0] => base/au/3/710/708
  8.                         )
  9.  
  10.                     [2] => Array
  11.                         (
  12.                             [0] => 2011
  13.                         )
  14.  
  15.                 )
  16.  
  17.         )
  18.  
  19.     [1] => Array
  20.         (
  21.             [0] => Array
  22.                 (
  23.                     [1] => Array
  24.                         (
  25.                             [0] => 744/149
  26.                             [1] => 743/140
  27.                             [2] => 742/118
  28.                             [3] => 741/118
  29.                             [4] => 740/112
  30.                             [5] => 739/112
  31.                             [6] => 738/79
  32.                             [7] => 737/79
  33.                             [8] => 736/73
  34.                             [9] => 735/73
  35.                             [10] => 734/58
  36.                             [11] => 733/58
  37.                             [12] => 732/5
  38.                             [13] => 731/5
  39.                             [14] => 730/22
  40.                             [15] => 729/23
  41.                             [16] => 728/23
  42.                             [17] => 727/24
  43.                             [18] => 726/24
  44.                             [19] => 725/24
  45.                         )
  46.  
  47.                     [2] => Array
  48.                         (
  49.                             [0] => 1994
  50.                             [1] => 1993
  51.                             [2] => 1992
  52.                             [3] => 1991 4A-M-000 001 >>
  53.                             [4] => 1991              >> 44-M-050 000
  54.                             [5] => 1990
  55.                             [6] => 1989
  56.                             [7] => 1988 44-J-200 100 >>
  57.                             [8] => 1988              >> 44-J-200 099
  58.                             [9] => 1987
  59.                             [10] => 1986
  60.                             [11] => 1985
  61.                             [12] => 1984
  62.                             [13] => 1983
  63.                             [14] => 1982
  64.                             [15] => 1981
  65.                             [16] => 1980
  66.                             [17] => 1979
  67.                             [18] => 1978
  68.                             [19] => 1977
  69.                         )
  70.  
  71.                 )
  72.  
  73.         )
  74.  
  75.     [2] => Array
  76.         (
  77.             [0] => Array
  78.                 (
  79.                     [1] => Array
  80.                         (
  81.                             [0] => 723/139
  82.                             [1] => 722/139
  83.                             [2] => 721/119
  84.                             [3] => 720/119
  85.                             [4] => 719/88
  86.                             [5] => 718/88
  87.                             [6] => 717/88
  88.                             [7] => 716/88
  89.                             [8] => 715/62
  90.                             [9] => 714/62
  91.                             [10] => 713/62
  92.                             [11] => 712/62
  93.                         )
  94.  
  95.                     [2] => Array
  96.                         (
  97.                             [0] => 1994
  98.                             [1] => 1993
  99.                             [2] => 1992
  100.                             [3] => 1991 4A-M-000 001 >>
  101.                             [4] => 1991              >> 44-M-050 000
  102.                             [5] => 1990
  103.                             [6] => 1989
  104.                             [7] => 1988 44-J-200 100 >>
  105.                             [8] => 1988              >> 44-J-200 099
  106.                             [9] => 1987
  107.                             [10] => 1986
  108.                             [11] => 1985
  109.                         )
  110.  
  111.                 )
  112.  
  113.         )
  114.  
  115.     [3] => Array
  116.         (
  117.             [0] => Array
  118.                 (
  119.                     [1] => Array
  120.                         (
  121.                             [0] => 751/248
  122.                             [1] => 750/248
  123.                             [2] => 749/248
  124.                             [3] => 748/248
  125.                             [4] => 747/248
  126.                             [5] => 746/248
  127.                         )
  128.  
  129.                     [2] => Array
  130.                         (
  131.                             [0] => 2005
  132.                             [1] => 2004
  133.                             [2] => 2003
  134.                             [3] => 2002
  135.                             [4] => 2001
  136.                             [5] => 2000
  137.                         )
  138.  
  139.                 )
  140.  
  141.         )


PHP:
скопировать код в буфер обмена
  1.                            foreach($years[$a][0][1] as $key=>$item){
  2.                            $years[0][0][1][$key] = "base/au/3/".$item;
  3.                            }
 
 Top
DlTA
Отправлено: 14 Декабря, 2011 - 22:55:47
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




замечательное слово
"рекурсия"
нужна функция которая будет пробегать по массиву, и менять значения

вопрос в следующем: нужно менять все значения или только те которые имеют внутри слеш?
 
 Top
Belohalatny
Отправлено: 14 Декабря, 2011 - 22:56:38
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Да, только те, которые имеют слэш
 
 Top
Panoptik
Отправлено: 14 Декабря, 2011 - 23:04:19
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




PHP:
скопировать код в буфер обмена
  1.     function add_url(&$array) {
  2.       if(count($array)){
  3.         foreach($array as $key => $item) {
  4.           if(strpos($item,'/')) {
  5.             $array[$key]="base/au/3/".$item;
  6.           } elseif(is_array($item) {
  7.             add_url($item);
  8.           }
  9.         }
  10.       }
  11.     }


чтото типа этого, хотя чувствую нужно немного доработать

(Отредактировано автором: 14 Декабря, 2011 - 23:10:22)



-----
Just do it
 
 Top
DlTA
Отправлено: 14 Декабря, 2011 - 23:06:23
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




PHP:
скопировать код в буфер обмена
  1. function addPred($inProp){
  2.         if (is_array($inProp)){
  3.                 foreach($inProp as $key=>$item){
  4.                         $inProp[$key] = addPred($item);
  5.                 }
  6.         }
  7.         else{
  8.                 if(preg_match("/^\d+\/\d+$/i",$inProp)){
  9.                         $inProp = "base/au/3/".$inProp;
  10.                 }
  11.         }
  12.         return $inProp;
  13. }
  14.  
  15. var_dump(addPred(array("123/123",array("123","123/213"))));


CODE (text):
скопировать код в буфер обмена
  1. array
  2.   0 => string 'base/au/3/123/123' (length=17)
  3.   1 =>
  4.     array
  5.       0 => string '123' (length=3)
  6.       1 => string 'base/au/3/123/213' (length=17)

(Добавление)
Panoptik
а это в эту тему?
Panoptik пишет:
function add_url(/2jmj7l5rSw0yVb-vlWAYkK-YBwk=Zm9ydW0vJiRhcnJheQ) {
  if(count($array)){
    foreach($array as $key => $item) {
      if(strpos($item,'/')) {
        $array[$key]="base/au/3/".$item;
      } elseif(isarray($item) {
        add_url(/2jmj7l5rSw0yVb-vlWAYkK-YBwk=Zm9ydW0vJGl0ZW0);
      }
    }
  }
}
 
 Top
Panoptik
Отправлено: 14 Декабря, 2011 - 23:09:03
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




угу, самое интересное что вот эту строку "/2jmj7l5rSw0yVb-vlWAYkK-YBwk=MmptajdsNXJTdzB5VmItdmxXQVlrSy1ZQndrPVptOXlkVzB2SkdsMFpXMA" добавил форум вместо вот этого "&$array"


-----
Just do it
 
 Top
Belohalatny
Отправлено: 14 Декабря, 2011 - 23:13:23
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Хм, ни первая, ни вторая функции не сработали. Первая выдала кучу ошибок, вторая сработала без них, но ничего не поменялось. Вызывал вот так:

PHP:
скопировать код в буфер обмена
  1. function addPred($inProp){
  2.         if (is_array($inProp)){
  3.                 foreach($inProp as $key=>$item){
  4.                         $inProp[$key] = addPred($item);
  5.                 }
  6.         }
  7.         else{
  8.                 if(preg_match("/^\d+\/\d+$/i",$inProp)){
  9.                         $inProp = "base/au/3/".$inProp;
  10.                 }
  11.         }
  12.         return $inProp;
  13. }
  14.  
  15. addPred($years);

или нужно было указать массив с ключами?
 
 Top
DlTA
Отправлено: 14 Декабря, 2011 - 23:16:00
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Belohalatny
использовали код 1 в 1
или чет намудрили?
ниже функции пример вызова и результат работы
 
 Top
Belohalatny
Отправлено: 14 Декабря, 2011 - 23:17:57
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Вот как скопировал в свое предыдущее сообщение код, абсолютно так же и использовал.
Результата нет, все старые значения ключей остались как были.
(Добавление)
пример вызова.
 
 Top
Panoptik
Отправлено: 14 Декабря, 2011 - 23:19:22
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




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

(Отредактировано автором: 14 Декабря, 2011 - 23:20:41)



-----
Just do it
 
 Top
Belohalatny
Отправлено: 14 Декабря, 2011 - 23:22:22
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Panoptik пишет:
потому что функция вернет новый массив, верните значение в новый массив или в старый, и тогда смотрите результат
Не понял ничего, если честно Недовольство, огорчение
Вот так надо сделать, после выполнения ф-ции например:
?
 
 Top
DlTA
Отправлено: 14 Декабря, 2011 - 23:23:42
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




вот так напишите вызов
$years = addPred($years);
(Добавление)
это функция а не процедура, и она возвращает значение
 
 Top
Belohalatny
Отправлено: 14 Декабря, 2011 - 23:26:03
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Спасибо огромное, все значения изменились!
 
 Top
Страниц (4): [1] 2 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB