Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]szukam gotowej funkcji albo dobrego sposóbu na zamian tablicy asocjacyjnej na zwykłą
jolam
post
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


Jak zamienić tablicę asocjacyjną na zwykłą z dwoma kolumnami? Bo potrzebuje tego do funkcji aktualizującej wierszy w bazie. Przekazuję do funkcji tablicę której indeksy to nazwy kolumn, a wartości to wartości jakie mają być w tych kolumnach. I teraz muszę przygotować łańcuch:
KOLUMNA1 = 'WARTOSC1', KOLUMNA2 = 'WARTOSC2'
i właśnie taka zamiana tablicy asocjacyjnej na zwykłą bardzo by mi ułatwiła pracę, szczególnie z pętlami foreach.

Pozdrawiam Jola
Go to the top of the page
+Quote Post
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




  1. foreach($tabAssoc as $key => $val){
  2.  
  3. }


?
Go to the top of the page
+Quote Post
thek
post
Post #3





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




To może uściślij jak ma wyglądać tablica wynikowa...
Tablica asocjacyjna jest w postaci (nazwa_key => nazwa_wartosc, nazwa2_key => nazwa2_wartosc, nazwa3_key => nazwa3_wartosc)
A Ty chcesz ją wprowadzić jako parametr do funkcji z inną tablicą, gdzie (1 => nazwa_key, 2 => nazwa2_key, 3 => nazwa3_key)
by uzyskać formę ( (nazwa_key, nazwa_wartosc), (nazwa2_key, nazwa2_wartosc), (nazwa3_key, nazwa3_wartosc) ), co jest z leksza bezsensowne.
Do tego odnosisz się tak jak napisał Spawnm.
Nie używasz więc:
  1. foreach($tabAssoc as $value){
  2. }
ale
  1. foreach($tabAssoc as $key => $val){
  2. }
co daje Ci dostęp do obu smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
jolam
post
Post #4





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


Witam i dziękuję za odpowiedź

Znam ten sposób:
foreach($tabAssoc as $key => $val){
}

Ale wolałabym uzyskać wprost coś takiego:
array( array( 'kolumna1, 'wartosc1'), array( 'kolumna2, 'wartosc2'), array( 'kolumna3, 'wartosc3'))

Potem tworzyłabym nową tablice:
array( 'kolumna1 = "wartosc1"', 'kolumna2 = "wartosc2"', 'kolumna3 = "wartosc3"')

Potem tylko implode i już mam łańcuch do wstawienia do komendy SQL. Bo samo dodawnaie do elementów przecinka nie wystarczy, bo do ostatniego nie można wstawić przecinka bo tego wymaga SQL

Ale to wszystko działoby się w funkcji a do niej wprowadzałabym tablice w postaci:
array(nazwa_key => nazwa_wartosc, nazwa2_key => nazwa2_wartosc, nazwa3_key => nazwa3_wartosc)

Pozdrawiam serdecznie Jola
Go to the top of the page
+Quote Post
Meares
post
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 16.10.2009
Skąd: Łódź

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


  1. function ConvertAssoc($array) {
  2. $array2 = array();
  3. $i = 0;
  4.  
  5. foreach($array as $key => $val) {
  6. $array[$i][0] = $key;
  7. $array[$i][1] = $val;
  8. $i++;
  9. }
  10.  
  11. return $array2;
  12. }

Cuś takiego?

Jednak jeśli dobrze zrozumiałem, to chcesz z danej tablicy wrzucić coś to zapytania SQL.

Ja sobie napisałem całą klasę do takich "tablicowych" zapytań. Oddałem ją za free na innym forum, więc i tu nie zaszkodzi. tongue.gif ActionSQL 0.8
Jeśli to o coś takiego chodziło, to w razie pytań pisz PW.

Ten post edytował Meares 21.10.2009, 15:32:02


--------------------
manual mmocenter
Nie pomagam na PW!
Go to the top of the page
+Quote Post
Kroolik1
post
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 1
Dołączył: 19.10.2009

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


Cytat
Ale wolałabym uzyskać wprost coś takiego:
array( array( 'kolumna1, 'wartosc1'), array( 'kolumna2, 'wartosc2'), array( 'kolumna3, 'wartosc3'))

Potem tworzyłabym nową tablice:
array( 'kolumna1 = "wartosc1"', 'kolumna2 = "wartosc2"', 'kolumna3 = "wartosc3"')


  1. //Funkcja przyjmuje początkową tablicę
  2. function tablica($TabArr){
  3.  
  4. $TabArr_keys = array_keys($TabArr); //Utworzenie indeksowanej tablicy z kluczami z $TabArr
  5. $TabArr_values = array_values($TabArr); //Utworzenie indeksowanej tablicy z wartościami z $TabArr
  6.  
  7. foreach($TabArr_keys as $key => $value){
  8.  
  9. $RetArray[] = $value.' = \"'.$TabArr_values[$key].'\"'; //Dodanie nowego indeksu do tablicy o wartosci 'klucz = "wartość"' z $TabArr
  10.  
  11. }
  12.  
  13. return $RetArray;
  14. // Zwrócona zostanie tablica z wartościami 'klucz = "wartość"' (jako string) każdego elementu tablicy array(klucz => wartość, ...)
  15. }


Takie coś?

Ten post edytował Kroolik1 21.10.2009, 16:07:24
Go to the top of the page
+Quote Post

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 Aktualny czas: 22.08.2025 - 06:35