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


PHP: Collapse arrays of varying sizes into uniform nested array

我有一个问题,我正在开发的API,返回纬度/经度坐标数组。为了不破坏应用端的解析器,我需要数据以统一嵌套数组的形式返回,如下所示:

{
  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]]我将永远感激不尽。

多谢谢,Rob

$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);