目前我有一些效果:
<?php
// ...More Code
$result = mysqli_query($mysqli, "SELECT * FROM stock_types");
if(!$result || mysqli_num_rows($result) < 1) die('error');
$stock_types = mysqli_fetch_all($result, MYSQLI_ASSOC);
mysqli_free_result($result);
die(print_r($stock_types,true));
// More Code...
?>
Run Code Online (Sandbox Code Playgroud)
会输出一些效果:
Array (
[0] => Array (
[type_id] => 1
[type_name] => In Stock
[type_visible] => 1
[type_locked] => 0
)
[1] => Array (
[type_id] => 2
[type_name] => Out of Stock
[type_visible] => 1
[type_locked] => 1
)
[2] => Array (
[type_id] => 3
[type_name] => Offline
[type_visible] => 0
[type_locked] => 1
)
[3] => Array (
[type_id] => 5
[type_name] => Hidden
[type_visible] => 0
[type_locked] => 0
)
)
Run Code Online (Sandbox Code Playgroud)
是否存在mysqli提取过滤器(正确的术语?),如果存在数组索引值,它将使用结果集中的主键?如果我的问题不明确,那么会产生一些影响他的效果:
Array (
[1] => Array (
[type_name] => In Stock
[type_visible] => 1
[type_locked] => 0
)
[2] => Array (
[type_name] => Out of Stock
[type_visible] => 1
[type_locked] => 1
)
[3] => Array (
[type_name] => Offline
[type_visible] => 0
[type_locked] => 1
)
[5] => Array (
[type_name] => Hidden
[type_visible] => 0
[type_locked] => 0
)
)
Run Code Online (Sandbox Code Playgroud)
type_id删除值并不重要,但如果主键可用于索引数组,那么它将非常有用.我可以用一个fetch循环来做这个,但我想知道是否有更简单更优雅的方法来处理它.
在 ext/mysqli 中没有方便的功能。但是您可以通过逐行获取行并将它们放入正确的数组键中,以您想要的方式构建数组:
此示例假设主键是第一列:
$set = array();
while ($row = $result->fetch_assoc()) {
$set[array_shift($row)] = $row;
}
Run Code Online (Sandbox Code Playgroud)
要使用 fetch_all() 执行此操作,您可以处理获取的 while 数据集:
$set = array();
$data = $result->fetch_all();
while ($row = array_shift($data)) {
$set[array_shift($row)] = $row;
}
Run Code Online (Sandbox Code Playgroud)