【问题标题】:Turning a list of lat/long in an array into assoc array of lat/long将数组中的 lat/long 列表转换为 lat/long 的关联数组
【发布时间】:2018-04-01 16:18:52
【问题描述】:

使用 PHP,

我想变成这样:

Array
(
[0] => -27.61797
[1] => 153.31181
[2] => -27.61801
[3] => 153.31183
[4] => -27.61806
[5] => 153.31188
[6] => -27.61824
[7] => 153.31217
[8] => -27.61826
[9] => 153.31246
[10] => -27.61783
[11] => 153.31324
)     

进入:

Array
(
[0]
   [lat] => -27.61797
   [long] => 153.31181
[1]
   [lat] => -27.61801
   [long] => 153.31183
[2]
   [lat] => -27.61806
   [long] => 153.31188
[3]    
   [lat] => -27.61824
   [long] => 153.31217
[4]
   [lat] => -27.61826
   [long] => 153.31246
[5]    
   [lat] => -27.61783
   [long] => 153.31324
)

这是必需的,因此我可以将经纬度列表传递给映射 API,以便在我的 iOS 和 Android 应用程序中显示路径。

【问题讨论】:

  • 你自己尝试过什么吗?
  • 是的,大约有 10 多种方法可以尝试找出答案。它已经到了现在凌晨 2:20 的地步,我无法弄清楚。任何帮助表示赞赏。否则,我会在早上用新鲜的眼睛尝试。
  • 你试过array_chunk($your_array,2);吗?
  • 好吧,您最好的代码尝试将不胜感激。 :)

标签: php arrays associative-array


【解决方案1】:

假设数组 $myArray 包含 lat、lng 的序列 您可以根据需要使用带有第 2 步的 for 循环来构建 $newArray

  $numCoords  = count($myArray)/2
  for ($i = 0; $i < $numCoords; $i++ ){
    $newArray[$i]['lat'] = $myArray[$i*2]; 
    $newArray[$i]['long'] = $myArray[($i*2)+1]; 
  }

【讨论】:

    【解决方案2】:

    一个简单的:

    for($i = 0; $i < count($your_array); $i += 2) {
        $new_array[] = ['lat' => $your_array[$i], 'long' => $your_array[$i + 1]];
    }
    

    一个复杂的:

    $keys = ['lat', 'long'];
    $new_array = array_map(function($v) use ($keys) { return array_combine($keys, $v); }, array_chunk($your_array, 2));
    

    【讨论】:

      【解决方案3】:

      使用array_chunk()的方法之一

      <?php
      $array = [-27.61797,153.31181,-27.61801,153.31183,-27.61806,153.31188,-27.61824,153.31217,-27.61826,153.31246,-27.61783,153.31324];
      $chunked  = array_chunk($array,2);
      foreach($chunked as $k=>$v){
          $final[$k]['lat'] = $v[0];
          $final[$k]['long'] = $v[1];
      }
      print '<pre>';
      print_r($final);
      print '</pre>';
      ?>
      

      演示: https://eval.in/981915

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-20
        • 1970-01-01
        相关资源
        最近更新 更多