Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konwersja tablicy na objekt
Forum PHP.pl > Forum > PHP
akurczyk
Mam taki kod:
  1. <?php
  2. $tablica["klucz1"] = "wartość 1";
  3. $tablica["klucz2"]["klucz3"] = "wartość 2";
  4. $tablica["klucz4"] = "wartość 3";
  5. $tablica["klucz5"]["klucz6"]["klucz7"]["klucz8"] = "wartość 4";
  6. $tablica["klucz9"]["klucz10"] = "wartość 5";
  7. $tablica["klucz11"] = "wartość 6";
  8. function rekurencja($tablica) {
  9.    if(is_array($tablica)) {
  10.        foreach($tablica as $klucz => $wartosc) {
  11.            echo "$klucz<br>";
  12.            rekurencja($wartosc);
  13.        }
  14.    } else {
  15.        echo "$tablica<br>";
  16.    }
  17. }
  18. rekurencja($tablica);
  19. ?>

Zwraca on:
Kod
klucz1
wartość 1
klucz2
klucz3
wartość 2
klucz4
wartość 3
klucz5
klucz6
klucz7
klucz8
wartość 4
klucz9
klucz10
wartość 5
klucz11
wartość 6

Co muszę zrobić aby przekonwertował on tablicę na obiekt?
marcio
serialize()/unserialize().
akurczyk
Mógł byś pokazać kod?
Szukałem w manualu, ale tam jest pokazane jak połączyć się z jakąś bazą danych i wyświetlić wyniki korzystając z tej funkcji.
kopix
  1. <?php
  2.  
  3. define("UNIQ_FIELD_ID", uniqid());
  4.  
  5. class ToObjectMapArray{
  6.  
  7.    public function __construct($resource){
  8.  
  9.        if(is_array($resource)){
  10.  
  11.            foreach($resource as $key => $value){
  12.  
  13.                $this->$key = new ToObjectMapArray($value);
  14.                            
  15.            }
  16.        
  17.        } else{
  18.  
  19.            $this->{UNIQ_FIELD_ID} = $resource;
  20.        
  21.        }
  22.    
  23.    }
  24.  
  25.    public function __toString(){
  26.  
  27.        return strval($this->{UNIQ_FIELD_ID});
  28.    
  29.    }
  30.  
  31.  
  32. }
  33. ?>


Dość dawno temu miałem ten sam problem i napisałem sobie taką klasę, która właśnie konwertuje tablice na obiekt i obsługuje nieograniczone zagnieżdżanie.

W użyciu wygląda to tak:
  1. <?php
  2.  
  3. $obiekt = new ToObjectMapArray($tablica);
  4.  
  5. ?>
Mize
Cytat(marcio @ 13.11.2008, 15:43:47 ) *
serialize()/unserialize().


Coś Ci się chyba pomieszało.

http://php.net.pl/manual/pl/function.serialize.php
kopix
Mi na pewno się nie pomyliło, jeśli chodzi o serializacje to wykonuje się ją na gotowym obiekcie, który chcemy przechować na później, natomiast konwersja tablicy na obiekt to zupełnie co innego.
mike
~kopix to teraz zoabcz do ~Mize pisał i kogo cytował.
Nie Ciebie więc bez ekscytacji tongue.gif
kopix
no racja, z pośpiechu nie zauważyłem
akurczyk
Problem rozwiązany, temat do zamknięcia.
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.