PHP:将不同大小的数组折叠成统一的嵌套数组

时间:2016-09-12 16:31:24

标签: php arrays

我遇到了一个问题,我正在开发一个返回lat / lon坐标数组的API。为了不破坏App端的解析器,我需要将数据作为统一的嵌套数组返回,如下所示:

{
  coordinates: [
    [
      -88.451,
      41.41
    ],
    [
      -85.123,
      40.10
    ],
    [
      -59.451,
      42.42
    ],
    [
      -89.124,
      44.10
    ]
  ]
}

但由于某种原因,我所提取的数据偶尔会嵌入到这样的组中:

{
  coordinates: [
    [
      -88.451,
      41.41
    ],
    [
      -85.123,
      40.10
    ],
    [
       [
         -59.451,
         42.42
       ],
       [
         -89.124,
         44.10
       ]
     ],
  ]
}

如果你有一个很好的方法将这些嵌套数组合并为一组统一的嵌套数组[[lat,lon],[lat,lon]],我将永远感激不尽。

非常感谢, 罗布

1 个答案:

答案 0 :(得分:0)

$myarray = [
    [
      -88.451,
      41.41
    ],
    [
      -85.123,
      40.10
    ],
    [
      -59.451,
      42.42
    ],
    [
      -89.124,
      44.10
    ]
];

function contains_array($array) {
    foreach ($array as $val) {
        if (is_array($val)) {
             return true;
        }
    }
    return false;
}

function array_flatten($array, $return) {
    foreach ($array as $key => $value) {
        if (is_array($value) && contains_array($value)) {
            $return = array_flatten($value, $return);
        } else {
            $return[$key] = $value;
        }
    }
    return $return;
}

$res = array_flatten($myarray, array());
var_dump($res);

这应该可以解决问题