2010-10-05 11 views
44

Czy ktoś może podać przykładowy typ danych w PHP? Jak to się stało, że nagle coś jest w PHP?Struktury typ danych w php?

+11

Skąd odczytać te informacje? PHP nigdy nie posiadało aktualnego typu danych "struct". – BoltClock

+0

Proszę pokazać kod lub link do miejsca, w którym czytasz o structs w PHP. – alex

+5

Prawdopodobnie zobaczył słowo struct, gdy on var_dump-ed obiekt mydła. –

Odpowiedz

73

Najbliższe można dostać się do struktury jest obiektem ze wszystkimi członkami publicznych.

class MyStruct { 
    public $foo; 
    public $bar; 
} 

$obj = new MyStruct(); 
$obj->foo = 'Hello'; 
$obj->bar = 'World'; 

Powiedziałbym, że patrząc na PHP Class Documentation byłoby tego warte. Jeśli potrzebujesz jednorazowej struktury, use the StdObject as mentioned in alex's answer.

+4

To byłoby 'class MyStruct' w przeciwieństwie do' object MyStruct';) – BoltClock

+1

Czy "whoops" jest odpowiednią odpowiedzią tutaj? Uczy mnie szybkiego odpowiadania podczas przerwy na lunch ... – ASpencer

+1

@ASpencer Dziękuję za wzmiankę o odpowiedzi Alexa. – Foreever

37

Można używać tablicy

$something = array(
    'key' => 'value', 
    'key2' => 'value2' 
); 

lub ze standardowego obiektu.

$something = new StdClass(); 

$something->key = 'value'; 
$something->key2 = 'value2'; 
1

I sklecony dzisiaj „dynamiczne” klasę struct, miał dzisiaj wyglądać i ktoś napisał coś podobnego z lepszą obsługą parametrów konstruktora, to może być warte obejrzenia:

http://code.activestate.com/recipes/577160-php-struct-port/

Jeden komentarze na tej stronie wspominają o interesującej rzeczy w PHP - najwyraźniej jesteś w stanie rzucić tablicę jako obiekt, który pozwala ci odwoływać się do elementów tablicy za pomocą notacji strzałkowej, tak jak w przypadku wskaźnika struktury w C. Przykład komentarza był następujący:

$z = array('foo' => 1, 'bar' => true, 'baz' => array(1,2,3)); 
//accessing values as properties 
$y = (object)$z; 
echo $y->foo; 

Jeszcze tego nie próbowałem, ale możliwe, że można uzyskać pożądany zapis przez samo rzucanie - jeśli to wszystko, czego szukasz. Są to oczywiście "dynamiczne" struktury danych, po prostu cukier syntaktyczny do uzyskiwania dostępu do par klucz/wartość w haszowaniu.

Jeśli rzeczywiście szukasz czegoś bardziej statycznie wpisane, następnie odpowiedź ASpencer jest robot szukasz (jak Obi-Wan może powiedzieć).

1

Wydaje się, że typ danych jest struct powszechnie stosowany w SOAP:

var_dump($client->__getTypes()); 

array(52) { 
    [0] => 
    string(43) "struct Bank {\n string Code;\n string Name;\n}" 
} 

to nie jest native PHP typ danych!

Wydaje się, że właściwości typu struct mowa w SOAP mogą być dostępne jako prosty PHP stdClass obiektu:

$some_struct = $client->SomeMethod(); 
echo 'Name: ' . $some_struct->Name;