PHP从MySQL查询存储二维数组

时间:2017-09-20 21:52:21

标签: php mysql arrays

我有一个简单的问题。我有一个数组有两列(id,name),这是MySQL查询的结果。我想将查询结果存储到数组变量中,以便在需要时可以访问每个元素。

我能够存储如下所示的一维数组:

    $array = array();
    while($row = mysqli_fetch_assoc($result))
    {
        $array[] = $row['name'];
    }

如何存储和访问二维数组?还最好使用for循环或while循环来存储这些吗?

2 个答案:

答案 0 :(得分:1)

不要专门存储$row的索引,而是存储整行。

$array = array();
while($row = mysqli_fetch_assoc($result))
{
    $array[] = $row;
}

然后$ array将具有以下结构:

$array = [
    [
       'id'=> ...,
       'name' => ...,
    ],
    ...
];

要初步访问[mysqli_fetch_assoc][1]的所有结果,您需要像往常一样使用while循环,mysqli_fetch_assoc将继续输出结果,直到它没有更多数据。然后,mysqli_fetch_assoc将返回NULL。这将向你的while循环发出信号以停止迭代。

然后,为了访问$array内的变量,我建议使用foreach

然后你可以这样做:

foreach ($array as $row) {
  do something with $row['name'] or $row['id']
}

您也可以使用for循环,但IMO需要更多工作。将上述内容与此替代方法进行比较:

for ($i = 0; $i < count($array); $i++) {
   $row = $array[$i];
   do something with $row['name'] or $row['id']
}

答案 1 :(得分:1)

只需这样做:

$array = array();
while($row = mysqli_fetch_assoc($result))
{
    $array[] = $row;
}

要访问结果,您可以执行以下操作:

$firstResultRow = $array[0];
$firstResultName = $array[0]['id'];
$firstResultName = $array[0]['name'];

这将告诉您是否存在特定行:

if(isset($array[$x])) {
    $aRow = $row[$x];
    // do stuff with $aRow;
}

这将为您提供阵列的行数:

$rowCount = count($array);

这将在你的数组中设置一个循环:

foreach($array as $index => $row) {
    $id = $row['id']
    $name = $row['name'];
    // $index will have the array index of the current row. 0 -> $rowCount - 1
}