从多层数组中读取mysqli_fetch_array中的数据?

时间:2016-08-05 20:53:48

标签: php mysqli

当我使用mysqli_fetch_array()时,我得到一个数组,但我该如何读取这些值? While-Loop是唯一的选项,还是我可以从行和列中选择任何值,就像具有row[0] column [3]索引的多维数组一样?

3 个答案:

答案 0 :(得分:2)

while循环每次迭代都会提取一行。

您可以使用mysqli_fetch_all

将所有行作为多维数组

之后,您可以使用[rowNum][colNum]

选择您的值

但要注意,当你的结果有很多行时 - 数组可能非常大并导致内存或其他问题。

更新以澄清:

如果您想要接收多维数组的行,则有两种方式:

首先:使用fetch_assoc / fetch_array迭代mysqli_result并将行追加到数组:

$rows = array();
while ($row = mysqli_fetch_array($res)) {
    $rows[] = $row;
}
echo $rows[0]['whatever'];

第二:通过一次函数调用接收所有结果:

$rows = mysqli_fetch_all($res, MYSQLI_ASSOC);
echo $rows[0]['whatever'];

这就是全部。没有更多方法可供使用。

答案 1 :(得分:1)

这取决于您从数据库返回结果的方式。

你的mysqli_fetch_array函数中有标志,你可以设置它来修改你的返回结果。

如果您使用$row = mysqli_fetch_array($result, MYSQLI_ASSOC);或在OOP $row = $result->fetch_array(MYSQLI_ASSOC);

然后您可以在while循环中将您返回的结果作为列名称访问,例如$ row [' name']或$ row [' age']

或者,如果您使用$row = mysqli_fetch_array($result, MYSQLI_NUM);或在OOP $row = $result->fetch_array(MYSQLI_NUM);

然后你可以像$ row [0]或$ row [3]

一样在while循环中访问你返回的结果

简单的例子是

while($row = mysqli_fetch_array($result)) {
    echo $row['name'] . " " . $row['age'];
}

了解更多信息。阅读PHP.net Fetch Array

答案 2 :(得分:0)

您的问题表明您的目标只是获得单一价值。如果是这种情况,您应该将查询限制为仅返回您要查找的内容而不是获取所有内容,然后使用PHP在结果中找到您想要的内容。

对于列,指定所需的一列而不是*,(SELECT one_column FROM your_table),对于该行,使用WHERE子句选择特定的ID(前提是在您的表上定义)或使用LIMIT子句从结果集中选择特定的行号。然后您不必获取循环或获取所有。您的查询结果(如果它&# 39;成功)只有一行有一列,你可以获取一次并获得你的价值。

当然,如果你需要反复做这件事(即在一个循环中),那么这不是最佳方法。