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


php 2d array ... store mysql results in 2d array

我有一个sql语句,它返回一些记录,每个记录有10个属性。我如何获得数据并将其放入二维数组。当前我在做这个:

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

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

mysql_fetch数组返回1-D数组,从查询结果中组合索引+键值的单行数据。如做

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](第一个记录[0]的第二个字段[1])

From the docs:

以关联数组、数字数组或两者的形式获取结果行

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

首先,您需要验证您得到的是什么类型的数组,然后您可以理解为什么您的键无效。尝试使用print_rvar_dump检查$row1.

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

如果你的查询返回

a    b    c
d    e    f

在while循环的第一次迭代中,row1保存着a b c,在第二次迭代中保存着d e f,它们都是一维数组。

$row1是一个一维数组(一条记录),在您的示例中,包含10个值。

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

参考这里的文档:http://ca.php.net/manual/en/function.mysql-fetch-array.php