PHP如何拆分数组元素?将mysqli查询结果转为索引式数组
如何将mysqli查询结果转为索引数组,让$row[0]对应第一个值?
嘿,我来帮你搞定这个问题~你当前的代码用mysqli_fetch_assoc()获取的是关联数组(键是数据库字段名name),所以每个$row的结构是['name' => 'xxx']。如果想让$row[0]对应Orders、$row[1]对应Documents这类索引形式的数组,有几个简单的实现方式:
方法1:直接用mysqli_fetch_row()获取索引数组
这是最直接的方式,mysqli_fetch_row()会把查询结果以索引数组的形式返回,下标从0开始:
$query = mysqli_query($db, "select name from documentation"); while ($row = mysqli_fetch_row($query)) { print_r($row); echo "<br />"; }
执行后输出就会变成:
Array ( [0] => Orders ) Array ( [0] => Documents ) Array ( [0] => Letters )
方法2:用array_values()把关联数组转成索引数组
如果你还是想保留mysqli_fetch_assoc()的使用,也可以在循环里用array_values()把关联数组转换为索引数组:
$query = mysqli_query($db, "select name from documentation"); while ($row = mysqli_fetch_assoc($query)) { $indexed_row = array_values($row); print_r($indexed_row); echo "<br />"; }
这样$indexed_row[0]就对应每个name字段的值啦。
方法3:用mysqli_fetch_array()指定索引模式
mysqli_fetch_array()支持通过参数指定返回类型,传入MYSQLI_NUM就会返回索引数组:
$query = mysqli_query($db, "select name from documentation"); while ($row = mysqli_fetch_array($query, MYSQLI_NUM)) { print_r($row); echo "<br />"; }
这个方法和mysqli_fetch_row()效果一致,只是更灵活——如果需要同时获取关联和索引数组,可以传MYSQLI_BOTH(默认值)。
内容的提问来源于stack exchange,提问作者Merlin2ify




