You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:06:04