靈活運用PHP stdClass

2021-06-19 02:47:23 字數 1791 閱讀 1021

一維陣列,我現在特別喜歡把它寫成物件,因為鍵盤打起來比較順手,看起來也順眼,如

$andy

= array

();  

$andy['a'] = 1;  

$andy['b'] = 2;  

$andy['c'] = 3; 

我喜歡把它變成這樣

$andy

= array

();  

$andy

= (object)$andy;  

$andy->

a = 1

;  $andy->

b = 2

;  $andy->

c = 3

;  

新建空陣列只要$andy = array();

新建空對像卻要$andy = new andy; 而且還得先有個class andy{}

或者得2行

$andy

= array

();  

$andy

= (object)$andy; 

用array直接改型別成object有點彆扭,今天找到了答案,感謝phpx的兄弟

php stdclass的介紹

$user

= new

stdclass();  

$user->

name

= 'gouki'

;  

這樣的**,這是幹嘛用的呢?

翻開手冊,搜尋stdclass,你會發現,手冊上幾乎沒有介紹,如果你再次搜尋google,看到的也幾乎全是英文解釋。

其實,stdclass在php5才開始被流行。而php stdclass也是zend的乙個保留類。似乎沒有其他作用。也幾乎沒有任何說明。

或者,我們可以這麼理解:php stdclass是php的乙個基類,所有的類幾乎都繼承這個類,所以任何時候都可以被new,可以讓這個變數成為乙個object。同時,這個基類又有乙個特殊的地方,就是沒有方法。

凡時用new stdclass()的變數,都不可能會出現$a->test()這種方式的使用。

或者,我們可以又這麼理解一下,正因為php5的物件的獨特性,物件在任何地方被呼叫,都是引用位址型的,所以相對消耗的資源會少一點。在其它頁面為它賦值時是直接修改,而不是引用乙個拷貝。

例如:$user

= new

stdclass();  

$user->

name

= 'gouki'

;  $myuser

= $user;  

$myuser->

name

= 'flypig'; 

如果在php4時代,這樣的**就是在消耗系統資源。因為:

$myuser = $user;

這是建立了乙個拷貝。所以,在php4的時候,都是這樣使用:

$myuser = & $user;

有人說,為什麼不用陣列呢?陣列不是更方便嗎?而且對於php這樣的弱型別程式來說,用陣列應該是最方便的。

確實。陣列在程式的使用中應該是最方便的,然而陣列的每次被引用($a = $b),其實都是建立了乙個副本,而且,陣列被unset後,還是占用了記憶體(這個是聽人說來的,我沒有測試……也不知道怎麼測試,如果有人知道,請告訴我,謝謝 )

不過spl的標準類庫里,還有乙個函式arrayobject,可以直接將陣列轉化為物件這也是乙個好辦法哦。

js 「 」 「 」的靈活運用

如果 左側表示式的值為真值,則返回右側表示式的值 否則返回左側表示式的值。js var i 真值 i i 真值 其他真值 i 其他真值 i 真值 i 如果 左側表示式的值為真值,則返回左側表示式的值 否則返回右側表示式的值。js var i 真值 i 真值 i 真值 其他真值 i 真值 i 真值 i...

靈活運用建構函式

示例 public class activityutils 得到activityutils的物件 public static activityutils getinstance return instance 管理activity的棧 public void add activity activit...

靈活運用Zend框架

aawardmem this dao raward getawardandmem where,award level asc false,false,false,award level,count award level as count false,array award level award ...