如何将PHP多维数组转一维的代码逻辑改写为Javascript版本
PHP多维数组展平功能的JavaScript等效实现
以下代码完全对齐提供的PHP逻辑,支持递归展平多维关联数组/对象,键名拼接规则、值转换规则和原PHP代码完全一致:
// 测试用例,对应PHP的输入数组 const array = { 'pg1': '23', 'pg_123': '342443', 'pg_1_2': '25', 'pg-123': 'test', 'pg321': 'grgerhgre' }; function makeFlatParamsArray(arrParams, parentName = '') { const arrFlatParams = {}; let i = 0; // 遍历当前对象的所有自有属性 for (const key in arrParams) { if (!arrParams.hasOwnProperty(key)) continue; i++; // 实现三位补零的序号,等效PHP的sprintf('%03d', $i) const serial = String(i).padStart(3, '0'); const name = parentName + key + serial; const val = arrParams[key]; // 判断是否为数组/对象,对应PHP的is_array判断逻辑 if (typeof val === 'object' && val !== null) { // 合并递归返回的结果,对应PHP的array_merge Object.assign(arrFlatParams, makeFlatParamsArray(val, name)); continue; } // 值强制转字符串,对应PHP的(string)$val arrFlatParams[name] = String(val); } return arrFlatParams; } // 调用并按PHP输出格式打印结果 const newArr = makeFlatParamsArray(array); for (const [key, value] of Object.entries(newArr)) { console.log(`${key} ${value};`); }
输出结果
运行后打印内容和原PHP代码输出完全一致:
pg1001 23;
pg_123002 342443;
pg_1_2003 25;
pg-123004 test;
pg321005 grgerhgre;
内容的提问来源于stack exchange,提问作者Adil
相关产品推荐
相关产品推荐

