Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Array wielowymiarowy, nazwy
Forum PHP.pl > Forum > Przedszkole
bulimaxiu
Witam. Poszukuję sposobu na identyfikację nazwy tablicy wielowymiarowej.
Załóżmy, że mamy taki prosty formularz, utworzony ze skryptu PHP
  1. <form action="" method="post">
  2. <input type="text" name="dane_do_zmiany_rekordu['ID1']"></br>
  3. <input type="text" name="dane_do_zmiany_rekordu['ID2']"></br>
  4. <input type="submit" name="submit" value="Wpisz">
  5. </form>

w którym wygenerowane są nazwy odpowiednich pól. W jaki prosty sposób można odczytać przez PHP nazwy wymiarów, które zostały określone, w tym przypadku "wyczytanie", że są to 'ID1' i 'ID2' i nadanie tych wartości zmiennej np. $rekord?

Docelowo chodzi o zastosowanie w skrypcie PHP (+mySQL), w którym zmienianych będzie za jednym kliknięciem Submit kilka rekordów w bazie danych, np.
[ID] [Wartość]
1. [Text pierwszy]
2. [Text drugi poprawiony]
3. [Text trzeci]
[Submit]

Pozdrawiam.
Sebastian
ddiceman
array_keys()
bulimaxiu
OK, to jest to rzeczywiście, teraz zrozumiałem co to są te keye.

Ale jedna zagwostka: array_keys($dana) działa do jednego wymiaru, a jak odwołać się do wielu wymiarów, np. $dana[glowna2][pierwsza]. 'glowna2' jest OK do wyciągnięcia, bo wystarcza array_keys($dana), ale jak wyciągnąć 'pierwsza', bo array_key(array_keys($dana)) wiadomo dzialac nie może, jak też wskazanie np. array_key($dana[glowna2]).

Pzdr.
ddiceman
  1. <?php
  2. $kolumny = array();
  3. foreach($dana AS &$wiersz){
  4. array_merge($kolumny, array_keys($wiersz));
  5. }
  6. return $kolumny;
  7. ?>
bulimaxiu
Wynikiem Twojego skryptu jest.... "Array ( )" i nie ma tego czego bym oczekiwał.
Zrobiłem testowo taki skrypt (bo to nie funkcja, nie ma return):
  1. <?php
  2. echo "Pierwsza wartosc to <b>".$dana[glowna1][pierwsza]."</b>";
  3. echo "Druga wartosc to <b>".$dana[glowna1][druga]."</b>";
  4. echo "Pierwsza wartosc to <b>".$dana[glowna2][pierwsza]."</b>";
  5. echo "Druga wartosc to <b>".$dana[glowna2][druga]."</b>";
  6.   print_r ($dana);
  7.   $tablica_danych = array();
  8.   foreach($dana AS $wiersz) {
  9.      array_merge($tablica_danych,array_keys($wiersz));
  10.   }
  11.   print_r ($tablica_danych);
  12. ?>

Czy mógłbyś na to zerknąć jeszcze raz?

Ostatecznie pozostaję przy tym, chyba że coś lepszego wyjdzie na jaw:
  1. <?php
  2. $key__table       = array();
  3.     $key1_table       = array_keys($_POST[dana]);           # lewe kategorie
  4.     $key1_table_count = count($key1_table);
  5.     foreach ($key1_table as $key1) {
  6.        $key2_table        = array_keys($_POST[dana][$key1]);      # prawe kategorie
  7.        $key2_table_count += count($key2_table);
  8.        foreach ($key2_table as $key2) {
  9.           array_push ($key__table, array($key1, $key2, $_POST[dana][$key1][$key2]));
  10.        }
  11.     }
  12.    unSet($key1);
  13.    unSet($key1_table);
  14.    unSet($key1_table_count);
  15.    unSet($key2);
  16.    unSet($key2_table);
  17.    unSet($key2_table_count);
  18.  ?>
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.