本文目錄一覽:
PHP數組中可否存放對象?如果可以,那麼在smarty的模板中應當如何獲取對象的屬性值?
PHP的數組是支持保存對象的實例的,然後你的錯誤提示中也能看出是用了數組的方式來訪問了一個對象。
建議你不要用對象的形式,而全部都用數組。可以用json函數來轉換
$user_array=json_decode(json_encode($user_array),true);
這樣一來$user_array裡面就全部都是數組,其中原先對象的部分被一個包含了其所有成員屬性的數組替代。
php中數組能儲存對象嗎
可以的 舉個簡單的例子給你
?php
class foo
{
function do_foo()
{
echo “Doing foo.”;
}
}
$bar = new foo;
$arry1=array(1,$bar);//這裡將實例化的對象存入數組
var_dump($arry1);//這裡打印數組結構 你會發現下標1的位置存儲了一個object對象
$arry1[1]-do_foo();;//以數組形式 調用do_foo();
$bar-do_foo();//正常的調用do_foo()
//兩種方式輸出是一樣的 充分說明 數組是可以存儲對象的 希望對你的學習有幫助
?
//下面是輸出 我自動換行分割了下 其實是一行
array(2) { [0]= int(1) [1]= object(foo)#1 (0) { } }
Doing foo.
Doing foo.
PHP數組裡面存放對象
樓上解釋正確,不過我補充一下。
既然初始化是在類聲明之後,那麼可以通過手動串行化和反串行化來達到目的。
保存的時候使用serialize來保存,提取恢復的時候使用unserialize來恢復。
當然,這個還有一個要注意的地方,需要保存的對象最好是只包含數據,意思是,不要有數據庫連接資源、文件資源之類的,如果包含這些,串行和反串行的結果都是一個int 0,反串行的時候可能不能正常工作。
至於對象串行反串行的一些可定製的功能,可以參考幫助文檔的這個部分:
通過定義魔術函數__sleep __wakeup來實現。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/184041.html