Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Przejście przez tablice + zapis kluczy/wartości, Problem z wygenerowaniem "tras" w zagnieżdzonej tablicy
haryb
post 5.01.2016, 22:30:06
Post #1





Grupa: Zarejestrowani
Postów: 137
Pomógł: 0
Dołączył: 9.11.2004
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Mam taką zagwozdkę mam tablicę wielokrotnie zagnieżdżona:

  1. public $dane = array(
  2. 111 => array(
  3. 222 => array(
  4. 333,
  5. 444 => array(
  6. 555
  7. ),
  8. ),
  9. 666,
  10. 777,
  11. 888 => array(
  12. 999,
  13. 1000,
  14. )
  15. )
  16. );


I potrzebuje tablicy która będzie zawierała jakby ścieżki dojścia do ostatniego elementu w danej gałęzi czy np:
  1. array(111,222,333),
  2. array(111,222,444,555),
  3. array(111,666),
  4. array(111,777),
  5. array(111,888,999),
  6. array(111,888,1000),
  7. );


Zacząłem kombinować w ten sposób:

  1. public function traceArray($input = array()){
  2. $iteration = new \RecursiveArrayIterator($input);
  3. $count = count($iteration);
  4. $i = 0;
  5. foreach($iteration as $key => $item) {
  6. if (is_array($item)) {
  7. $this->tmp[] = $key;
  8. $this->traceArray($item);
  9. } else {
  10. $i++;
  11. $this->tablica_wyjsciowa[] = array_merge($this->tmp, array($item));
  12. if ($i == $count) {
  13. $this->tmp = array();
  14. }
  15. }
  16. }
  17. }
  18.  
  19. $this->traceArray($tablica_wejsciowa);
  20. var_dump($this->tablica_wyjsciowa);
  21.  


Niestety nie do końca śmiga tak jakbym chciał, na początku dobrze buduje tablice ścieżek, ale w momencie kiedy zresetuje tablice tmp to kolejne tablice ścieżki nie zawierają wszystkich elementów jeśli nie będę tego resetował to kolejne tablice ścieżek będą dodawać się niepoprawnie.

Jakiś pomysł co można by poprawić w kodzie by generowało taką tablicę ?


Ten post edytował haryb 5.01.2016, 16:53:39
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:43