php:无意的多维数组而不是一维数组

eh57zj3b  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(451)

我使用以下语句在数据库的1个表中的1列中搜索不同的条目:

SELECT DISTINCT column FROM table WHERE column entry LIKE '%keyword%'

这很好,因为转储mysqli\u查询会显示所提供的特定关键字的预期输入量。然后,我尝试将查询结果写入一维数组(数组在代码的其他地方声明):

while($row = mysqli_fetch_row($query)) {
$array[] = $row;
}

因此,我期望一个简单的数字一维数组,如下所示:

Array(
[0] => value 1
[1] => value 2
...
)

使用print\r($array)检查结果时,我得到如下数组:

Array(
[0] => Array([0] => value1)
[1] => Array([0] => value2)
...
)

我不知道这种奇怪的结构从何而来,因为这不是我代码中唯一的数组。我一步一步地检查了特定的代码块,得出的结论是问题出在数组的创建过程中。使用mysqli\u fetch\u assoc无法解决此问题。但这里到底有什么问题?
有没有人见过这样的事情,知道怎么解决这个问题?
提前谢谢。

qmelpv7a

qmelpv7a1#

mysqli_fetch_row 获取作为枚举数组的结果行。除了nigel ren的方法,您还可以使用 mysqli_fetch_assoc() . 它将以关联数组的形式获取结果行。它将列名作为键,而不是像0,1..这样的数字。。;这样就有了更清晰的方法。
现在有两个选项可以获得特定列值的一维数组。
使用columnname作为键,从结果行访问列值:

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

或者,
您可以首先准备二维数组(因为您可能有多个列);然后使用 array_column() 函数以获取作为一维数组的特定列值。

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

// Extract values for a columnname key
$columnname_values = array_column($array, 'columnname');

或者,
nigel ren在评论中建议的另一种选择是使用 mysqli_fetch_all() 功能。

$array =  mysqli_fetch_all($result,MYSQLI_ASSOC);

// Extract values for a columnname key
$columnname_values = array_column($array, 'columnname');
vhmi4jdf

vhmi4jdf2#

mysqli_fetch_row() 返回sql中列的数组,因此将其添加到数组中时。。。

$array[] = $row;

这将为每一行创建一个数组,即数组数组。如果将列值添加到数组中。。。

$array[] = $row[0];

这应该给你的结果后。

相关问题