一直以為php的陣列更節省記憶體,從來沒有測試過,今天因為要讀取乙個大配置檔案作為pool。做了一次測試;
得出結論是 使用物件儲存資料更好,花費的記憶體是陣列array的1/4。
測試**
class obj
}$max = 10000;
$old = memory_get_usage();
for ($i=0;$i<$max;$i++)
$new = memory_get_usage();
echo "個陣列(預設key)記憶體消耗".($new-$old)."\n";
$old = memory_get_usage();
for ($i=0;$i<$max;$i++)
$new = memory_get_usage();
echo "個陣列(和物件可以互相轉換的)記憶體消耗".($new-$old)."\n";
$old = memory_get_usage();
for ($i=0;$i<$max;$i++)
$new = memory_get_usage();
echo "個物件記憶體消耗".($new-$old)."\n";
結果
10000個陣列(預設key)記憶體消耗 4288440
10000個陣列(和物件可以互相轉換的)記憶體消耗 4284288
10000個物件記憶體消耗 1451320
大概比例
array:object = 4:1
越是複雜的陣列,用過同等物件儲存,記憶體小更多 php物件陣列轉陣列 php物件轉陣列的函式
關於php中想讓物件以陣列的形式訪問,這時候就需要使用到get object vars 函式了。先來介紹一下這個函式。官方文件是這樣解釋的 array get object vars object obj 返回由 obj 指定的物件中定義的屬性組成的關聯陣列。舉例 setlabel point 1 ...
php取出陣列內指定的值
php array slice 函式 array slice 函式在陣列中根據條件取出一段值,並返回。注釋 如果陣列有字串鍵,所返回的陣列將保留鍵名。語法array slice array,offset,length,preserve 引數描述array必需。規定輸入的陣列。offset 必需。數值...
php的物件轉陣列
1.php stdclass object轉array function object array array if is array array return array 2.array json decode json encode xml load string xmlstring true ...