2010-10-05 11 views
44

¿Alguien me puede dar un ejemplo para el tipo de datos de estructuras en php? ¿Cómo es que hay algo así como structs en php de repente?¿Estructura el tipo de datos en php?

+11

Dónde leíste esta información? PHP nunca ha tenido un tipo de datos 'struct' real. – BoltClock

+0

Por favor, muestre el código o enlace al lugar donde lee sobre las estructuras en PHP. – alex

+5

Probablemente vio la palabra struct cuando var_dump-ed un objeto soap. –

Respuesta

73

más cercano se obtendría con una estructura es un objeto con todos los miembros del público.

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

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

yo diría que mirar el PHP Class Documentation valdría la pena. Si necesita una estructura única, use the StdObject as mentioned in alex's answer.

+4

Eso sería 'clase MyStruct' en oposición al' objeto MyStruct';) – BoltClock

+1

¿Es 'whoops' una respuesta apropiada aquí? Me enseña a responder rápidamente durante el almuerzo ... – ASpencer

+1

@ASpencer Gracias por mencionar la respuesta de Alex también. – Foreever

37

Puede utilizar una matriz

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

o con objeto estándar.

$something = new StdClass(); 

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

me armó una clase struct 'dinámica' de hoy, tenía un aspecto de esta noche y alguien ha escrito algo similar con un mejor manejo de los parámetros del constructor, podría valer la pena un vistazo:

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

Uno de los comentarios en esta página mencionan algo interesante en PHP: aparentemente puedes lanzar una matriz como un objeto, lo que te permite referirte a elementos de la matriz usando la notación de flecha, como lo harías con un puntero Struct en C. El ejemplo del comentario fue el siguiente:

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

Aún no lo he intentado, pero es posible que obtengas la anotación deseada solo con el lanzamiento, si eso es todo lo que buscas. Estas son, por supuesto, estructuras de datos "dinámicas", solo azúcares sintácticos para acceder a los pares clave/valor en un hash.

Si en realidad estás buscando algo más estático de tipos, a continuación, la respuesta de ASpencer es el androide que está buscando (como Obi-Wan podría decir.)

1

Parece que el tipo de datos struct se utiliza comúnmente SOAP:

var_dump($client->__getTypes()); 

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

Esto no es un tipo de datos nativa de PHP!

Parece que las propiedades del tipo de struct se refiere el jabón se puede acceder como un simple objeto PHP stdClass:

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