【问题标题】:Array merge recursive with an variable index数组合并递归与变量索引
【发布时间】:2018-03-13 17:45:34
【问题描述】:

我需要合并 secuentially 不同的数组。

假设我需要将 3 个和 2 个数组合并在一起。目前我正在使用这个:

$ppjson_data= json_encode(array_merge_recursive($ppposts[0][0],$ppposts[0][1],$ppposts[0][2],$ppposts[1][0],$ppposts[1][1]));

这很好用。

现在的问题是我可能需要合并的数组数量不是恒定的。有 $x 和 $y 数组要递归合并,那你会怎么做呢?

$x=5;
$y=10;
for ($i=0;$i<$x+1) {
  for ($j=0;$j<$y+1) {    
    $ppjson_data=json_encode(array_merge_recursive(...));
  }
}

感谢您的帮助。

【问题讨论】:

    标签: php arrays recursion merge


    【解决方案1】:

    调用array_merge_recursive,将数组的子数组作为参数,使用call_user_func_array

    $ppjson_data = json_encode(call_user_func_array('array_merge_recursive', $ppposts));
    

    这会创建一个 arra,在 JSON 中它将被 [] 包围。如果你想要一个对象而不是 {},然后使用 (object) 投射它:

    $ppjson_data = json_encode((object)call_user_func_array('array_merge_recursive', $ppposts));
    

    【讨论】:

    • 几乎完成了,但是生成的 json 以“[”开头并以“]”结尾。有没有机会避免这种情况?
    • 我更喜欢前一个然后:$ppjson_data=str_replace(array('[', ']'), '', $ppjson_data)
    • 取决于您的需要,这可能不是有效的 JSON。检查jsonlint.com
    • 就我而言,它是有效的。谢谢!
    猜你喜欢
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2013-06-04
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多