php 2d array ...将mysql结果存储在2d数组中

时间:2011-11-02 17:48:32

标签: php

我有一个sql语句,它返回多个记录,每个记录都有10个属性。如何获取数据并将其放入2D数组中。目前我这样做:

while($row1 = mysql_fetch_array($result1))
{
    echo $row1[0][1]; //There is an error here
}

$ row1是2D数组吗? (这应该是因为我得到了n * m的结果)。如果$ row1是2d数组,那么我不能访问$ row [0] [1]?

4 个答案:

答案 0 :(得分:1)

mysql_fetch数组返回一维数组,从查询结果中合并一行数据的索引+键控值。例如做

SELECT field1,field2,field3 FROM sometable

在结果上做一个mysql_fetch_array会给你一个看起来像这样的数组:

$row1 = array(
    0 => 'value of field1',
    1 => 'value of field2',
    2 => 'value of field3',
    'field1' => 'value of field1'
    'field2' => 'value of field2',
    'field3' => 'value of field3'
)

如果要将整个结果集作为单个数组处理,则必须先获取每一行并将其添加到该数组中:

$data = array();
while($row1 = mysql_fetch_array($result)) {
    $data[] = $row1;
}

让你做$data[0][1](第1记录[0]的第2个字段[1])

答案 1 :(得分:0)

$row1一次只能保存一条记录,因此它是一个常规的一维数组。

如果您的查询返回

a    b    c
d    e    f

在while循环的第一次迭代中,row1保持a b c,在第二次迭代中,它保存d e f,这两个维度都是单维数据。

答案 2 :(得分:0)

来自文档:

  

获取结果行作为关联数组,数字数组或两者

如果mysql_fetch_array正在恢复1行数据,您对第二维的期望是什么?

首先,您需要验证您获得的阵列类型,然后您才能理解为什么您的密钥无效。尝试使用print_rvar_dump来检查$ row1。

答案 3 :(得分:0)

$ row1是一个1维数组(单个记录),在您的情况下,包含10个值。

当代码循环遍历while语句时,$ row1代表每条记录。

请参阅此处的文档:http://ca.php.net/manual/en/function.mysql-fetch-array.php