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]   

> Без описания
Telnet
Отправлено: 09 Июля, 2012 - 23:20:08
Post Id


Частый гость


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


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




Задача такая есть примерно такой одномерный массив
первый
-первыйпервый
-первыйвторой
--первыйвторойпервый
--первыйвторойвторой
второй
-второйпервый
третий

нужно преобразовать в это
array(
[0]=>первый(
array [0]=>первыйпервый; [1]=>первыйвторой;
[1]=>первыйвторой(
array([0]=>первыйвторойпервый,[1]=>первыйвторойвторой),
[2]=>второй(
array [0]=>второйпервый;)
[3]=>третий
)
т.е нужно исходя из кол-ва черточек впереди каждого элемента составить многомерный массив любой степени вложености
 
 Top
armancho7777777 Супермодератор
Отправлено: 09 Июля, 2012 - 23:25:29
Post Id



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


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


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




Скажите, от куда это берётся, чем генерируется, для чего всё это.
И тогда получите, возможно, оптимальное решение.
 
 Top
Telnet
Отправлено: 09 Июля, 2012 - 23:37:10
Post Id


Частый гость


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


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




armancho7777777 пишет:
Скажите, от куда это берётся, чем генерируется, для чего всё это.
И тогда получите, возможно, оптимальное решение.


Берется модератор сайта, вводит в админ панели таким образом связанный список
Хочу сделать из этого многомерный массив потом пройтись рекурсией и по наделать связанных списков
(Добавление)
БЫло
Array
(
[0] => первый
[1] => -первыйпервый
[2] => -первыйвторой
[3] => второй
[4] => -второйпервый
[5] => третий
)
обработка
PHP:
скопировать код в буфер обмена
  1.                        
  2.         foreach( $field->options as $k=>$option ){
  3.             if(strpos($option,'-')!='-'){
  4.                         $parant = $option;
  5.                 $child[$k] = $parant;            
  6.             }else{
  7.                 $child[$parant][$k] = $option;
  8.             }
  9.         }
  10. '

получили
Array
(
[0] => первый
[первый] => Array
(
[1] => -первыйпервый
[2] => -первыйвторой
)

[3] => второй
[второй] => Array
(
[4] => -второйпервый
)

[5] => третий
)
(Добавление)
Вот так вот дописал
PHP:
скопировать код в буфер обмена
  1.         foreach( $field->options as $k=>$option ){
  2.             if(strpos($option,'-')!='-'){
  3.                         $parant = $option;
  4.                 $childs[$k] = $parant;            
  5.             }else{
  6.                 $childs[$parant][$k] = $option;
  7.             }
  8.         }
  9.        
  10.         foreach( $childs as $k=>$child ){                          
  11.                 if(!is_int($k)){
  12.             $html.= '<select >';
  13.                 foreach( $child as $kеу=>$ch ){
  14.                         $html.='<option value="' . CTemplate::escape( $ch ) . '"' . $selected . '>' . JText::_( $ch ) . '</option>';
  15.                 }
  16.              $html.= '</select >';  
  17.             }        
  18.         }

что б получить только те списки которые является дочерными
да нужно только дописать рекурсию и готово
 
 Top
PATCH
Отправлено: 10 Июля, 2012 - 01:55:29
Post Id



Частый посетитель


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


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




так чели?

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //$cats -> многоуровневый массив
  3. //$parent_id->это индитификатор родительской категории по нему будут выстраиватся  дети и дети детей и т.д
  4.  
  5. private function cat_rekyrs($cats,$parent_id)
  6. {       //проверяем существует ли массив и количество записей в нашем родителе
  7.         if(@is_array($cats) and count(@$cats[$parent_id])>0)
  8.         {
  9.                 echo "<ul>";
  10.                 //в цикле перебираем наш много мерный массив
  11.                 foreach($cats[$parent_id] as $cat)
  12.                 {
  13.                          echo "<li><a href='#' >".$cat."</a></li>";  
  14.                          //вызываем еще раз наш метод для того что бы вытащить из нашего родителя детей и так получается рекурсия которая формирует список и вытаскивает детей и детей их детей
  15.                          $this->cat_rekyrs($dir_main,$theme,$cats,$cat['id_cat']);  
  16.                 }
  17.                 echo "</ul>"
  18.         }
  19.   else return null;          
  20. }
  21.  
  22.         public function Title_Cat_echo ($dir_main,$theme)
  23.         {
  24.           $this->cat_rekyrs($this->cat_protect(),0);
  25.         }
  26. ?>
 
 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