PHP/MySQL:While循环添加多维关联数组失败,生成两个独立数组
问题解决:MySQL数据存入多维关联数组的输出误区
你的代码逻辑本身是正确的,问题出在打印数组的时机:你把print_r($Array);写在了while循环内部,导致每读取一条数据就打印一次当前的数组状态,所以看起来像是生成了两个独立数组,但实际上$Array已经是你想要的多维关联数组了。
修正后的代码
<?php //GO GET THE DATA $sql = "SELECT * FROM contacts"; $result = $mysqli->query($sql); //SET THE ARRAY $Array = []; if ($result->num_rows > 0) { // 读取数据并添加到数组 while($row = $result->fetch_assoc()) { $Array[] = [ 'name' => $row["name"], 'email' => $row["email"] ]; } // 循环结束后再打印完整数组 print_r($Array); } ?>
现象原因说明
- 第一次循环:
$Array添加了John的数据,此时打印的是仅含一个元素的数组 - 第二次循环:
$Array追加了Paul的数据,此时打印的是包含两个元素的数组 - 你看到的两次输出是数组逐步构建的过程,而非两个独立的数组
手动添加数据时,你是先完成所有元素的插入,再执行一次打印,所以直接得到了完整的多维数组,这和修正后代码的输出结果完全一致。
内容的提问来源于stack exchange,提问作者simpleCTO
相关产品推荐
相关产品推荐

