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]   

> Описание: Нужно правильно вывести массив
Конструктор
Отправлено: 04 Октября, 2011 - 18:25:06
Post Id



Частый гость


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


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




Есть массив
$array
('name1' => $array=>( x1, y1, z1),
'name2' => $array=>( x2, y2, z2, n2, m2),
'name2' => $array=>( x3, y3)
);

Нужно вывести его в таком виде:
name1 ( x1, y1, z1) name1
name2 ( x2, y2, z2, n2, m2) name2
name3 ( x3, y3) name3
Тоесть как видно из структуры вывода, данные будут записываться в XML-файл.

Начал пробовать , но запутался с циклами:
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach ($ar as $key => $value) {
  3.         echo $key.'<br />';
  4.         /*while ($element = each($ar[$key][])) {
  5.                 ;
  6.         }*/
  7. }
  8.  

Может кто подскажет удобные циклы?

(Отредактировано автором: 04 Октября, 2011 - 19:10:07)



-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
LIME
Отправлено: 04 Октября, 2011 - 19:38:27
Post Id


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


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


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




так пойдет?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $ar=array('name1' => array( 'x1','y1', 'z1'),
  3. 'name2' => array( 'x2', 'y2', 'z2', 'n2', 'm2'),
  4. 'name3' => array( 'x3', 'y3')
  5. );
  6. foreach ($ar as $key => $value) {
  7.         echo $key.'('.implode(',',$value).')'.$key.'<br>';
  8. }
  9. ?>
 
 Top
Конструктор
Отправлено: 04 Октября, 2011 - 21:27:09
Post Id



Частый гость


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


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




LIME пишет:
так пойдет?

Да, честно говоря ответ более чем точен..
но я немного ошибся в вопросе..
В индексах массива у меня есть 'files' , 'images', а содержымое уже во вложенном массиве..
PHP:
скопировать код в буфер обмена
  1.  
  2. $ar=array('files' => array( 'index.html','index.php', 'params.ini' ... ),
  3. 'images' => array( 'x2', 'y2', 'z2', 'n2', 'm2'),
  4. 'css' => array( 'x3', 'y3')
  5. );
  6.  

в xml должно выглядеть так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.         <files>
  3.                 <filename>index.html</filename>
  4.                 <filename>index.php</filename>
  5.                 <filename>params.ini</filename>
  6.                 <filename>templateDetails.xml</filename>
  7.                 <filename>bilder/index.html</filename>
  8.                 <filename>styles/index.html</filename>
  9.         </files>
  10.         <images>
  11.                 <filename>favicon.ico</filename>
  12.                 <filename>template_thumbnail.png</filename>
  13.                 <filename>bilder/a_protsenko.png</filename>
  14.                 <filename>bilder/hg.png</filename>
  15.                 <filename>bilder/hg_nav.png</filename>
  16.                 <filename>bilder/hg_nav2.png</filename>
  17.         </images>
  18.  

В вопросе я хотел упростить смысл, но немного перестарался..
А в общем чтобы вывести как показано тут мне использовать тот же способ?

(Отредактировано автором: 04 Октября, 2011 - 21:33:02)



-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
LIME
Отправлено: 04 Октября, 2011 - 21:31:06
Post Id


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


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


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




Конструктор врядли
смотря что у нас на входе
в каком виде данные
лучше точный пример
 
 Top
Конструктор
Отправлено: 04 Октября, 2011 - 21:35:29
Post Id



Частый гость


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


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




LIME пишет:
лучше точный пример

если точно то имем:

PHP:
скопировать код в буфер обмена
  1.  
  2. array(3) { ["css"]=> array(1) { [0]=> string(13) "css/style.css" } ["files"]=> array(6) { [0]=> string(10) "helper.php" [1]=> string(9) "index.php" [2]=> string(22) "js/jquery-1.6.4.min.js" [3]=> string(10) "js/main.js" [4]=> string(19) "templateDetails.xml" [5]=> string(16) "tmpl/default.php" } ["images"]=> array(2) { [0]=> string(18) "images/favicon.ico" [1]=> string(29) "images/template_thumbnail.png" } }
  3.  

нужно получить
PHP:
скопировать код в буфер обмена
  1.  
  2.         <files>
  3.                 <filename>index.html</filename>
  4.                 <filename>index.php</filename>
  5.                 <filename>params.ini</filename>
  6.         </files>
  7.         <images>
  8.                 <filename>favicon.ico</filename>
  9.                 <filename>template_thumbnail.png</filename>
  10.         </images>
  11.         <css>
  12.                 <filename>styles/tsytron.css</filename>
  13.                 <filename>styles/tsytron_grau.css</filename>
  14.         </css>
  15.  

(Отредактировано автором: 04 Октября, 2011 - 21:37:11)



-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
LIME
Отправлено: 04 Октября, 2011 - 21:35:37
Post Id


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


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


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




хотя попробую применить супер способности ))
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. foreach ($ar as $key => $value) {
  3.         echo $key.'<filename>'.implode('</filename><filename>',$value).'</filename>'.$key.'<br>';
  4. }
  5. ?>

(Добавление)
Конструктор ага
тогда надо знать какие могут быть категории и какие им соответствуют расширения
 
 Top
Конструктор
Отправлено: 04 Октября, 2011 - 21:41:01
Post Id



Частый гость


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


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




LIME пишет:
какие могут быть категории

Внутренние катекгории соответсвуют названиям внутренних массивов.
Но Каждая катекория css например, не дожна указывться в каждой строчке.. а тольк
вначале и конце мини-массива.

кроме того каждый элемент должен быть заключен в скобки <filename>

(Отредактировано автором: 04 Октября, 2011 - 21:43:51)



-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
LIME
Отправлено: 04 Октября, 2011 - 21:43:52
Post Id


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


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


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




тогда без проблем
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. foreach ($ar as $key => $value)
  3.         echo '<'.$key.'><filename>'.implode('</filename><filename>',$value).'</filename></'.$key.'>';
  4. ?>

(Отредактировано автором: 04 Октября, 2011 - 21:48:02)

 
 Top
Конструктор
Отправлено: 04 Октября, 2011 - 21:45:38
Post Id



Частый гость


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


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




LIME пишет:
тогда без проблем

Да, благодарю, так все работает как надо . ..

(Отредактировано автором: 04 Октября, 2011 - 21:46:55)



-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
LIME
Отправлено: 04 Октября, 2011 - 21:50:34
Post Id


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


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


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




даже немного жаль что так просто ))
я уже switch практически написал ))
кстать выше чуть подредактировал
 
 Top
Конструктор
Отправлено: 04 Октября, 2011 - 21:58:20
Post Id



Частый гость


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


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




LIME пишет:
даже немного жаль что так просто ))
я уже switch практически написал ))
кстать выше чуть подредактировал

Единственное что мне осталось это табудяцию правильно вывести..
Так как буду выводить в файл, то
перед каждым элементом буду добавлять \t\t
и после каждой строчки \n


-----
Если все время идти вперед, до цели будет немного ближе..
 
 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