Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как получить определенные данные массива?
 
 автор: Fest   (10.10.2013 в 23:13)   письмо автору
 
 

Есть массив с такой структурой -
 
Array
(
    [0] => ASUME Object
        (
            [pide] => 22
            [done] => 66
            [more] => Array
                (
                    [0] => DONEL Object
                        (
                            [id] => 0
                            [more] => Array
                                (
                                    [0] => RUMER Object
                                        (
                                            [id] => 2
                                            [ord] => 35
                                        )

                                     [1] => RUMER Object
                                        (
                                            [id] => 3
                                            [ord] => 35
                                        )
                                )
                        )

                    [1] => DONEL Object
                        (
                            [id] => 2
                            [more] => Array
                                (
                                    [0] => RUMER Object
                                        (
                                            [id] => 2
                                            [ord] => 77
                                        )

                                     [1] => RUMER Object
                                        (
                                            [id] => 3
                                            [ord] => 77
                                        )
                                )
                        )
                )
        )
)

Нужно получит все ключи - и их соответствия. Делаю так -

 array($scart);
 foreach ($scart as $kluch)
 {
 foreach ($kluch as $dannie => $sup)

    {
     echo $dannie;
     echo $sup;
    }

 }


и получаю

pide 22
done 66
more Array

Не пойму как перебрать остальное? В какую сторону смотреть?

  Ответить  
 
 автор: Sfinks   (11.10.2013 в 08:22)   письмо автору
 
   для: Fest   (10.10.2013 в 23:13)
 

Смотреть в сторону рекурсии.
Т.е. выделить код, перебирающий один уровень массива в функцию и в ней выполнять проверку.
Если значение - массив или объект, то вызывать саму себя.
Примерно так:
<?php
  $arr 
// это исходный массив
  
recurs($arr); // запуск рекурсии
  
function recurs($data){ // сама рекурсивная функция
    
foreach($data as $key => $val){
      if(
is_array($val) || is_object($val)) // проверка значения
        
recurs($val);
      else
        echo 
$key.' '.$val."\n";
    }
  }

  Ответить  
 
 автор: Fest   (11.10.2013 в 11:15)   письмо автору
 
   для: Sfinks   (11.10.2013 в 08:22)
 

Да, - сработало - спасибо. Но вообще этот массив нужно преобразовать в
четыре строки -

0 id 0 0 id 2 ord 35
0 id 0 1 id 3 ord 35

1 id 2 0 id 2 ord 77
1 id 2 1 id 3 ord 77

и это нужно делать на этапе if...(как бы задать структуру массива, тем более что по ключам
обращаться нельзя, т.к. они могут меняться) - правильно ли я понимаю?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования