PHP массив занимает слишком много памяти - PullRequest
0 голосов
/ 16 июня 2010

У меня есть многомерный массив. Сам массив в порядке. Моя проблема в том, что скрипт занимает огромное количество памяти, и, поскольку я запускаю его на своей установке MAMP на iBook G4, мой компьютер зависает. Ниже приведен полный скрипт.

$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 ]

1 голос
/ 16 июня 2010

Если этот код дословно скопирован / вставлен непосредственно из вашего кода, одна вещь, которая бросилась в глаза (если я не вижу вещей), это отсутствие закрывающего '}' для цикла while ???

Ура, Алекс

0 голосов
/ 16 июня 2010

Это странно, потому что вы уже установили ограничение в 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 для чанков из массива и манипулировать этими чанками так, как хотите.

...