PHP数组占用太多内存

时间:2010-06-16 03:08:56

标签: php arrays memory-management multidimensional-array

我有一个多维数组。阵列本身很好。我的问题是该脚本占用了大量的内存,而且由于我在我的iBook G4上运行MAMP,我的计算机冻结了。以下是完整的脚本。

$query = "SELECT * FROM posts ORDER BY id DESC LIMIT 10"; 
$result = mysql_query($query);
$posts = array();
while($row = mysql_fetch_array($result)){

            $posts[$row["id"]]['post_id'] = $row["id"];
            $posts[$row["id"]]['post_title'] = $row["title"];
            $posts[$row["id"]]['post_text'] = $row["text"];
            $posts[$row["id"]]['post_tags'] = $row["tags"];
            $posts[$row["id"]]['post_category'] = $row["category"];

foreach ($posts as $post) {
   echo $post["post_id"];
}

是否仍有一种解决方法可以实现我的目标(将MySQL查询行导出到数组中)?

-Dylan

2 个答案:

答案 0 :(得分:1)

如果该代码是逐字的,直接从您的代码中复制/粘贴,有一件事引起了我的注意(除非我看到的东西)是没有关闭'}'的while循环???

干杯, 亚历

答案 1 :(得分:0)

这很奇怪,因为你已经设定了10的限制。请注意,您在使用$row["title"]函数时指定关联数组,例如mysql_fetch_array,向其添加第二个参数MYSQL_ASSOC或使用mysql_fetch_assoc函数:

while($row = mysql_fetch_assoc($result)){
   $posts[$row["id"]]['post_id'] = $row["id"];
   $posts[$row["id"]]['post_title'] = $row["title"];
   $posts[$row["id"]]['post_text'] = $row["text"];
   $posts[$row["id"]]['post_tags'] = $row["tags"];
   $posts[$row["id"]]['post_category'] = $row["category"];
}

您可能希望将array_chunk函数用于数组中的块并根据需要操作这些块。