如何为WordPress wpdb查询返回的行对象添加自定义键值对?
问题:如何在WordPress wpdb查询结果的每行添加自定义键值对
当前使用WordPress的wpdb进行数据库查询后得到$result结果集,遍历代码如下:
foreach($result as $row) { echo $row; }
输出的行对象JSON结构为:
{ "NDB_No": "20129", "Ingredient": "Wheat flours, bread, unenriched", "PolyFat": "0.72", "Chol": "0", "Refuse_Pct": "0", "Instructions": "Δεν Υπάρχουν Οδηγίες", "Ingredients": "Δεν Υπάρχουν Υλικά", "Image": "20129_Wheat flours.png" }
需要在每个返回的行对象末尾添加somename":"somevalue这样的自定义键值对,具体实现方法如下:
解决方案
WordPress的wpdb查询返回的结果集,每行数据的类型取决于查询参数:默认是对象(OBJECT模式),也可指定为关联数组(ARRAY_A模式),对应两种添加方式:
1. 行数据为对象时(默认场景)
直接给对象添加属性即可,修改后的遍历代码:
foreach($result as $row) { // 添加自定义键值对 $row->somename = 'somevalue'; // 输出JSON格式的行数据(避免直接打印对象,确保编码后输出) echo json_encode($row); }
2. 行数据为关联数组时
如果查询时使用了ARRAY_A参数(例如$wpdb->get_results($sql, ARRAY_A)),直接给数组添加键值:
// 使用引用&,让修改同步到原$result数组中 foreach($result as &$row) { $row['somename'] = 'somevalue'; echo json_encode($row); } // 解除引用,防止后续变量被意外修改 unset($row);
注意事项
- 原始代码中
echo $row若能输出JSON,说明之前已做编码处理,需确保添加键值对后再执行json_encode,避免重复编码。 - 若需批量修改整个结果集再统一使用,可先遍历完成修改,再单独处理输出逻辑。
内容的提问来源于stack exchange,提问作者Gacha SS
相关产品推荐
相关产品推荐

