我有一个简单的问题。我有一个数组有两列(id,name),这是MySQL查询的结果。我想将查询结果存储到数组变量中,以便在需要时可以访问每个元素。
我能够存储如下所示的一维数组:
$array = array();
while($row = mysqli_fetch_assoc($result))
{
$array[] = $row['name'];
}
如何存储和访问二维数组?还最好使用for循环或while循环来存储这些吗?
答案 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
}