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 :: помогите с многомерным массивом

 PHP.SU

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


 Страниц (1): [1]   

> Без описания
oleg666
Отправлено: 17 Августа, 2012 - 22:33:46
Post Id


Новичок


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


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




Есть массив

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. Array
  3. (
  4.     [array] => Array
  5.         (
  6.             [name] => sadsa
  7.             [id] => 5000
  8.             [0] => Array
  9.                 (
  10.                     [name] => sadsad
  11.                     [id] => 4000
  12.                     [0] => Array
  13.                         (
  14.                             [name] => sadsaasdas
  15.                             [id] => 2000
  16.                             [0] => Array
  17.                                 (
  18.                                     [name] => dsfdsfdsf
  19.                                     [id] => 1000
  20.                                     [0] => Array
  21.                                         (
  22.                                             [name] => ATV Parts & Accessories
  23.                                            [id] => 200000362
  24.                                            [0] => Array
  25.                                                (
  26.                                                    [name] => Automobiles & Motorcycles
  27.                                                    [id] => 34
  28.                                                    [0] => Array
  29.                                                        (
  30.                                                        )
  31.  
  32.                                                )
  33.  
  34.                                        )
  35.  
  36.                                )
  37.  
  38.                        )
  39.  
  40.                )
  41.  
  42.        )
  43.  
  44. )
  45.  


получаю его
CODE (htmlphp):
скопировать код в буфер обмена
  1. $array_iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($data['array'] ) );
  2.  
  3.                          foreach($array_iterator as $key)
  4.                          {
  5.  
  6.                         echo $key
  7.                          }


На выхоте текст вкучу

string 'sadsa' (length=5)
string '5000' (length=4)
string 'sadsad' (length=6)
string '4000' (length=4)
.....

Не получается отдельно вывести элементы $key['id']
Куда копать.
 
 Top
OrmaJever Модератор
Отправлено: 17 Августа, 2012 - 22:59:46
Post Id



Активный участник


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


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




PHP:
скопировать код в буфер обмена
  1. function r(&$arr) {
  2.         echo $arr['id'], '<br>';
  3.         if(!empty($arr[0]) && is_array($arr[0])) r($arr[0]);
  4. }
  5. r($data['array']);


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
oleg666
Отправлено: 18 Августа, 2012 - 12:28:30
Post Id


Новичок


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


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




Благодарю, весь день убил.

Еще вопрос как лучше повернуть такой массив
Сейчас функци возвращает
sadsad / sadsaasdas / dsfdsfdsf / ATV Parts & Accessories / Automobiles & Motorcycles

Я хочу зеркально

Automobiles & Motorcycles / ATV Parts & Accessories / dsfdsfdsf/ adsaasdas / sadsad

array_reverse замечательно работает при 2 мерном массиве, если глубина как на примере выше, то почему то начинается каша.
 
 Top
OrmaJever Модератор
Отправлено: 18 Августа, 2012 - 12:55:28
Post Id



Активный участник


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


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






-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
oleg666
Отправлено: 18 Августа, 2012 - 13:19:13
Post Id


Новичок


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


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




array_reverse замечательно работает при 2 мерном массиве, если глубина как на примере выше, то почему то начинается каша.
 
 Top
OrmaJever Модератор
Отправлено: 18 Августа, 2012 - 13:37:14
Post Id



Активный участник


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


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




Ну либо переворачивать его рекурсией либо создать одномерный немного изменив мою функцию и перевернуть одномерный.
PS. А зачем такой глубокий масив?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
oleg666
Отправлено: 18 Августа, 2012 - 16:35:29
Post Id


Новичок


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


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




массив вложенных каталогов приходит в таком виде.

пробую рукурсивно
CODE (htmlphp):
скопировать код в буфер обмена
  1. function ReverseArrayAction($array)
  2.                  {    $index = 0;
  3.                      foreach ($array as $subarray)
  4.                      {    if (is_array($subarray))
  5.                          {    $subarray = array_reverse($subarray);
  6.                              $arr = $this->ReverseArrayAction($subarray);
  7.                              $array[$index] = $arr;
  8.                          }
  9.  
  10.                      }
  11.                      return $array;
  12.                  }


на выходе почему то не совсем то

CODE (htmlphp):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [name] => sadsa
  4.     [id] => 5000
  5.     [0] => Array
  6.         (
  7.             [0] => Array
  8.                 (
  9.                     [0] => Array
  10.                         (
  11.                             [0] => Array
  12.                                 (
  13.                                     [0] => Array
  14.                                         (
  15.                                             [0] =>
  16.                                             [id] => 34
  17.                                             [name] => Automobiles & Motorcycles
  18.                                        )
  19.  
  20.                                    [id] => 200000362
  21.                                    [name] => ATV Parts & Accessories
  22.                                )
  23.  
  24.                            [id] => 1000
  25.                            [name] => dsfdsfdsf
  26.                        )
  27.  
  28.                    [id] => 2000
  29.                    [name] => sadsaasdas
  30.                )
  31.  
  32.            [id] => 4000
  33.            [name] => sadsad
  34.        )
  35.  
  36. )
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB