2010-06-16 110 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