如何用PHP将WooCommerce键值对对象转成可map遍历的对象数组
完全可以用PHP完成这个转换,根本不需要必须依赖前端JS处理
你当前的场景本质是把WooCommerce返回的键值对关联数组,重组成索引结构的对象数组,逻辑非常直白,后端直接输出前端需要的格式反而能减少前端的重复代码。
具体代码调整
你现在通过get_allowed_countries()拿到的返回值,是标准的PHP关联数组:两位国家编码当键,国家全称当值。只需要遍历这个数组,把每一组键值对重新打包成带code、name字段的单元,塞进新的索引数组返回即可。
修改后的函数:
function get_billing_countries( $request ) { $woo_countries = new WC_Countries(); $raw_countries = $woo_countries->get_allowed_countries(); $formatted_countries = []; foreach ( $raw_countries as $country_code => $country_name ) { $formatted_countries[] = [ 'code' => $country_code, 'name' => $country_name, ]; } return $formatted_countries; }
最终返回效果
WooCommerce的REST接口会自动把PHP返回的数组做JSON序列化,前端拿到的响应完全匹配你需要的格式,可以直接用map等数组方法遍历,不需要额外做结构转换:
[ { code: "GB", name: "United Kingdom" }, { code: "US", name: "United States" }, ]
补充说明:如果你习惯用函数式写法,也可以用
array_map配合array_keys实现同样效果,但foreach的可读性更高,后续维护成本更低,适合这类业务逻辑简单的场景。
内容的提问来源于stack exchange,提问作者Waterfall
相关产品推荐
相关产品推荐

