2010-06-16 70 views
0

我有一个多维数组。数组本身很好。我的问题是脚本占用了大量内存,而且由于我在我的iBook G4上安装了MAMP,所以我的电脑冻结了。以下是完整的脚本。PHP阵列占用太多内存

$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

+0

正在使用多少内存?你是否使用[memory_get_usage](http://us2.php.net/manual/en/function.memory-get-usage.php)进行测量? – Charles 2010-06-16 03:32:40

+2

由于错误报告已关闭,因此循环之后未收到报告的'}'所导致的语法错误不可能是一个问题,可以吗? :) – deceze 2010-06-16 03:34:00

回答

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函数从阵列块,但是操作这些数据块你要。

+0

谢谢,但它没有完成工作 – 2010-06-16 03:21:08

+0

@迪兰泰勒:什么错误信息,如果你有什么? – Sarfraz 2010-06-16 03:23:04

+0

这不是一个错误信息 - 该页面从未加载过,httpd进程(MAMP进程)高达28mb并攀升。我必须停止页面加载并强制退出进程。 – 2010-06-16 03:25:05

1

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

干杯, Alex

+0

是的,这是我的错字。它在我的代码中。感谢您的提醒! – 2010-06-16 03:38:35