Может ли кто-нибудь дать мне пример для типа данных structs в php? Как получилось что-то вроде структур в php внезапно?
Ближе всего вы попадаете в структуру, это объект со всеми членами сообщества.
class MyStruct { public $foo; public $bar; } $obj = new MyStruct(); $obj->foo = 'Hello'; $obj->bar = 'World';
Я бы сказал, что смотреть на документацию на PHP-класс будет стоить того. Если вам нужна разовая структура, используйте StdObject, как указано в ответе alex .
Вы можете использовать массив
$something = array( 'key' => 'value', 'key2' => 'value2' );
или со стандартным объектом.
$something = new StdClass(); $something->key = 'value'; $something->key2 = 'value2';
Сегодня я собрал «динамический» класс структуры, посмотрел сегодня вечером, и кто-то написал что-то похожее с лучшей обработкой параметров конструктора, может быть стоит посмотреть:
http://code.activestate.com/recipes/577160-php-struct-port/
В одном из комментариев на этой странице упоминается интересная вещь в PHP – видимо, вы можете отливать массив как объект, который позволяет ссылаться на элементы массива, используя обозначение стрелки, как и с указателем Struct в C. Пример комментария был следующим:
$z = array('foo' => 1, 'bar' => true, 'baz' => array(1,2,3)); //accessing values as properties $y = (object)$z; echo $y->foo;
Я еще не пробовал это сам, но, может быть, вы могли бы получить желаемую нотацию, просто нажав – если это все, что вам нужно. Это, конечно, «динамические» структуры данных, просто синтаксический сахар для доступа к парам ключ / значение в хеше.
Если вы действительно ищете что-то более статически типизированное, то ответ ASpencer – это дроид, которого вы ищете (как мог бы сказать Оби-Ван).
Я рекомендую 2 вещи. Сначала ассоциативный массив .
$person = Array(); $person['name'] = "Joe"; $person['age'] = 22;
Во-вторых, это классы .
Подробная документация здесь: http://php.net/manual/en/language.oop5.php
Кажется, что тип struct
обычно используется в SOAP :
var_dump($client->__getTypes()); array(52) { [0] => string(43) "struct Bank {\n string Code;\n string Name;\n}" }
Это не родной тип данных PHP!
Кажется, что свойства типа struct
упоминаемые в SOAP, могут быть доступны как простой объект PHP stdClass
:
$some_struct = $client->SomeMethod(); echo 'Name: ' . $some_struct->Name;