Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]szukam gotowej funkcji albo dobrego sposóbu na zamian tablicy asocjacyjnej na zwykłą
Forum PHP.pl > Forum > Przedszkole
jolam
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
Spawnm
  1. foreach($tabAssoc as $key => $val){
  2.  
  3. }


?
thek
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
jolam
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
Meares
  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.
Kroolik1
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ś?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.