Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Synchronizacja tablic. Identyczne klucze w każdej z tablic?
kukix
post
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


Witam..

Posiadam dynamicznie generowane tablice, $dane[0], $dane[1], $dane[2] itd. Ilośc tablic to od 2 do max 5, średnia ilość kluczy w tych tablicach to 10-50 kluczy.

Potrzebuje zsynchronizować klucze w tych tablicach. tzn jeżeli w jednej tabeli występuje dany klucz to potrzebuje, żeby dodać go do pozostałych, które go nie posiadają, ale żeby wartość była pusta lub jakiś inny wybrany znak.

Znalazłem w manualu funkcje array_diff, jednak nie mam pomysłu jak optymalnie to wykorzystać.

Przykładowe tablice:
  1. $dane[0] = array (
  2. 'nazwa_1' => 'wartosc_1',
  3. 'nazwa_4' => 'wartosc_4'
  4. );
  5.  
  6. $dane[1] = array (
  7. 'nazwa_1' => 'wartosc_1a',
  8. 'nazwa_2' => 'wartosc_2a',
  9. 'nazwa_3' => 'wartosc_3a',
  10. 'nazwa_4' => 'wartosc_4a'
  11. 'nazwa_5' => 'wartosc_5a',
  12. 'nazwa_6' => 'wartosc_6a'
  13. );
  14.  
  15. $dane[2] = array (
  16. 'nazwa_2' => 'wartosc_2b',
  17. 'nazwa_3' => 'wartosc_3b',
  18. 'nazwa_4' => 'wartosc_4b'
  19. );
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Masz klucze numeryczne - zapomnij o array_merge. Przy array_merge indeksy numeryczne zostają przeindeksowane :/ Zobacz sobie przykład 2 w manualu tej funkcji. Jeśli to klucze asocjacyjne - wal array_merge bez problemu, bo to będzie o wiele lepsze.

EDIT: Przy czym w przypadku array_merge, jeśli masz jedynie klucze asocjacyjne, możesz zapomnieć o diffie. Wystarczy, że tablicę bazową dołączysz jako ostatnią. array_merge ma taką fajną właściwość, że w takim wypadku nadpisze wartość.
Innymi słowy Twój algorytm dla array_merge wyglądałby tak:
1. Połącz wszystkie tablice inne niż wybrana
2. Ustaw wszystkim kluczom wybraną wartość.
3. Podłącz do tak otrzymanej - wybraną tablicę,

Możesz także jak proponujesz... Jedna tablica z wszystkim kluczami (tylko uważać na te klucze numeryczne!) i od razu ją jako wzorzec wyzerować. Potem tylko ją łączyć z kolejnymi. Jak widać metod jest wiele (IMG:style_emoticons/default/smile.gif) To jest bowiem optymalizacja tego co podałem w poście tym.
Powód edycji: [thek]: Małe dodatki ;)
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: 11.10.2025 - 04:24