Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> "Rozpakowywanie" array'a w funkcji rekurencyjnej
pawelvod
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 21.09.2006

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


Mam tablicę wielokrotnie zagnieżdzoną. Jak zbudować funkcję (pewnie rekurencyjną), która wejdzie w każde miejsce tablicy i sprawdzi jakąś zależność. Dana zależność ma być szukana na wszystkich piętrach i we wszystkich elementach tablicy. Konkretnie chodzi o podmianę nazwy "założyciela rekordu" w zależności od tego czy był to gość (wtedy nazwę pozstawia niezmienioną), czy był to zalogowany użytkownik (wtedy kopiuje aktualną nazwę z profilu użytkownika). Rekordy trzymam w tablicy króra ma podrekordy, te mają podrekordy itd... Na razie napisałem funkcję która robi to trzy piętra w głąb i działa na zasadzie trzech zagnieżdzonych FOREACH, ale chciałbym napisać taką działającą na nieskończenie zagnieżdzonej tablicy i nie mogę sobie poradzic z przekazaniem miejsca na którym w danym momencie ma sie odbywać przekształcenie w tablicy.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pawelvod
post
Post #2





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 21.09.2006

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


Zrobiłem przez foreach i referencje:
  1. <?php
  2. function renameUsername(&$table)
  3. {
  4. //zamnienia nazwy creator name i editor name w zależności od tego kto stworzył
  5. if (!isset($table)) return;
  6. if (!is_array($table)) return;
  7. foreach ($table as $keyRecord=>&$record)
  8. {
  9. if (isset($record['created_by'])&&isset($record['created_by']['username']))
  10. {
  11. if ($record['created_by']['id']<>1) @$record['creator_name'] = $record['created_by']['username'];//$result[$key][$recordKey]['creator_name'] = $this->find
  12. }
  13. if (isset($record['edited_by'])&&isset($record['edited_by']['username']))
  14. {
  15. if ($record['edited_by']['id']<>1) @$record['editor_name'] = $record['edited_by']['username'];//$result[$key][$recordKey]['creator_name'] = $this->find
  16. }
  17. $this->renameUsername($record);
  18. }
  19. }
  20. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 9.10.2025 - 20:25