2010-10-05 64 views
44

任何人都可以給我例如結構數據類型在PHP?突然間怎麼會有像php這樣的結構?在php中構造數據類型?

+11

你在哪裏讀這個信息? PHP從來沒有實際的'struct'數據類型。 – BoltClock 2010-10-05 06:48:39

+0

請在PHP中顯示代碼或鏈接,瞭解關於structs的相關信息。 – alex 2010-10-05 06:49:46

+5

當他var_dump-ed一個soap對象時,他可能看到了struct這個詞。 – 2012-02-20 14:56:43

回答

73

最近的你會得到一個struct是公共所有成員的對象。

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

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

我想說看看PHP Class Documentation將是值得的。 如果你需要一次性結構,use the StdObject as mentioned in alex's answer

+4

這將是'class MyStruct',而不是'object MyStruct'; – BoltClock 2010-10-05 21:08:18

+1

'哎呦'是一個合適的響應嗎?在午餐時間教我快速回答... – ASpencer 2010-10-05 21:45:08

+1

@ASPncer感謝您提及alex的回答。 – Foreever 2015-01-15 08:39:29

37

可以使用陣列

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

與標準的對象。

$something = new StdClass(); 

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

我今天拼湊起來的「動態」結構類,一看今晚有人寫有更好的處理的構造函數的參數類似的東西,它可能是值得一試:

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

之一在這個頁面上的註釋提到了PHP中一個有趣的事情 - 顯然你可以將一個數組作爲一個對象,它可以讓你使用箭頭符號來引用數組元素,就像使用C中的Struct指針一樣。如下:

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

我還沒有嘗試過這一點,但它可能是你可以通過鑄造得到所需的符號 - 如果這就是你想要的。這些當然是'動態'數據結構,只是用於訪問哈希中的鍵/值對的語法糖。

如果你實際上是在尋找一些更靜態類型,然後ASpencer的答案是你要找的機器人(如歐比旺可能會說。)

1

看來,struct數據類型是常用在SOAP

var_dump($client->__getTypes()); 

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

這不是一個本地的PHP數據類型!

看來,在SOAP提到的struct類型的屬性可以作爲一個簡單的PHP stdClass對象訪問:

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