PHP将MySQL数据库作为关联数组逐行获取

时间:2011-10-21 01:30:20

标签: php mysql arrays

我有一个简单的mySQL数据库表,我将其加载到PHP数组中。我希望mySQL表的id列(自动递增,但我认为不相关)是PHP数组的每个元素的数组键,而不是数组的数组。 / p>

而不是:

Array(
  Array(id=>'1', field1=>someval, field2=>val),
  Array(id=>'2', field1=>val, field2=>otherval),
  Array(id=>'4', field1=>val, field2=>otherval)
)

我想要这个:

Array(
  1=>Array(field1=>someval, field2=>val),
  2=>Array(field1=>val, field2=>otherval),
  4=>Array(field1=>val, field2=>otherval)
)

我不关心id是否留在每行的关联数组中。

有没有办法在没有循环原始mySQL数组并耗费大量处理时间的情况下执行此操作?

3 个答案:

答案 0 :(得分:2)

你可以在这样的获取时间执行此操作:

$query_ret = mysql_query(...);
$result = array();
while ($row = mysql_fetch_assoc($query_ret)) {
    $result[array_shift($row)] = $row;
}

答案 1 :(得分:1)

“有没有办法在没有循环原始mySQL数组并耗费大量处理时间的情况下执行此操作?”

我相信答案是没有。您可以做的最好的事情是在循环遍历数组时尽量提高效率。

答案 2 :(得分:0)

如果你有PDO,你肯定应该从PDO文档中看到示例#3 for fetchall:http://www.php.net/manual/en/pdostatement.fetchall.php#example-1022

这样不仅可以更有效地利用服务器的内存和处理能力......还可以让您利用PDO的其他几个强大的API。