如何在PHP关联数组中存储三个字段并按指定格式输出?
解决关联数组添加字段并格式化输出的问题
我来帮你搞定这个需求!首先得指出你现有代码里的一个小问题:你在while循环之前调用了一次$row = mysqli_fetch_assoc($resultsd1);,这会把结果集的第一条数据取出来但没加入数组,导致你少了一条记录,这个得先修正掉。
接下来针对你要添加notification_check字段并实现name1=>24.725=>yes_notification这种输出的需求,这里有两种实用的方案:
方案一:用嵌套数组存储多字段(推荐,更灵活)
这种方式把每个name对应的多个字段存在一个子数组里,后续如果要扩展其他字段也很方便:
$sql = "SELECT * FROM `notification_table` "; $resultsd1 = mysqli_query($conn, $sql); $associativeArray = array(); // 去掉之前多余的mysqli_fetch_assoc调用,直接用while循环遍历所有结果 while ($row = mysqli_fetch_assoc($resultsd1)) { // 将price和notification_check存入子数组 $associativeArray[$row['name']] = [ 'price' => $row['price'], // 用??运算符处理字段不存在的情况,避免报错 'notification_check' => $row['notification_check'] ?? 'no_notification' ]; } // 遍历数组并格式化输出 foreach($associativeArray as $k => $data){ echo $k . "=>" . $data['price'] . "=>" . $data['notification_check'] . ' '; }
方案二:直接存储拼接后的字符串(适合仅需输出的场景)
如果你的需求只是单纯输出这种格式,不需要后续操作字段值,可以直接在存入数组时就拼接好字符串:
$sql = "SELECT * FROM `notification_table` "; $resultsd1 = mysqli_query($conn, $sql); $associativeArray = array(); while ($row = mysqli_fetch_assoc($resultsd1)) { $notificationStatus = $row['notification_check'] ?? 'no_notification'; $associativeArray[$row['name']] = $row['price'] . "=>" . $notificationStatus; } foreach($associativeArray as $k => $value){ echo $k . "=>" . $value . ' '; }
额外提醒
- 确保你的
notification_table表中确实存在notification_check字段,否则会出现未定义索引的警告,上面的代码用??运算符做了兜底处理,如果字段不存在会显示no_notification。 - 建议在SQL查询里明确指定需要的字段,而不是用
SELECT *,比如SELECT name, price, notification_check FROM notification_table,这样更高效也更清晰。
内容的提问来源于stack exchange,提问作者Vidhi Gupta
相关产品推荐
相关产品推荐

