如何正确Implode从wp_badges数据库表获取的逗号分隔ID值,生成每个ID带双引号的格式
解决方法:拆分字符串后再处理引号
你现在的问题核心是没把数据库里的逗号分隔字符串拆成单个ID的数组,反而直接把整个字符串当成了数组的唯一元素,所以implode之后只会给整个串套上引号。咱们一步步调整代码:
先修正核心逻辑
首先得把数据库返回的逗号分隔ID拆成单个元素的数组,再给每个元素加上双引号,最后拼接成你要的格式。另外注意下:你数据库里的字段是value_id,但原代码里写的是values_id,这个笔误会导致拿不到数据,得先统一字段名!
完整修正代码(支持多条记录)
如果数据库里有多条带逗号分隔ID的记录,用这个写法能把所有ID都处理好:
$result = $wpdb->get_results( "SELECT DISTINCT value_id FROM wp_badges"); $allIds = []; foreach($result as $value){ // 把单条记录里的逗号分隔ID拆成数组,合并到总数组 $singleRecordIds = explode(',', $value->value_id); $allIds = array_merge($allIds, $singleRecordIds); } // 给每个ID加上双引号 $quotedIds = array_map(function($id) { return "\"$id\""; }, $allIds); // 拼接成最终结果 echo implode(',', $quotedIds);
简化写法(仅单条记录时)
如果你的数据库里只有一条记录,用这个更简洁:
// 用get_row拿单条记录更高效 $result = $wpdb->get_row( "SELECT value_id FROM wp_badges"); // 拆分逗号分隔的ID为数组 $ids = explode(',', $result->value_id); // 直接拼接出带双引号的格式 echo '"' . implode('","', $ids) . '"';
这个写法的逻辑很直观:先把字符串拆成数组,再用","作为分隔符拼接数组元素,最后在首尾补上双引号,就能得到你想要的"2719","3314"。
内容的提问来源于stack exchange,提问作者JFeel
相关产品推荐
相关产品推荐

