2017-01-31 3 views
1

У меня есть объект-arraylist с координатами атрибутов.Консолидация вложенных массивов в один массив

Как бы я мог сгладить этот массив. Сплющивание, я имею в виду сохранение координатных массивов, но информация в дополнительных массивах должна быть нажата в первый массив в конце.

"checksum": "b29e57b048be1ff004de37679c6f6ea4", 
"type": "LineString", 
"color": "#0000ff", 
"text": "", 
"count": 2, 
"length": 1, 
"coordinates": [ 
    [ 
    [ 
     1245613.4845831, 
     8456782.8389739 
    ], 
    [ 
     1245612.5888367, 
     8456786.5712507 
    ], 
    [ 
     1245611.3945081, 
     8456792.6921846 
    ], 
    [ 
     1245611.9916724, 
     8456795.678006 
    ] 
    ], 
    [ 
    [ 
     1245560.9341261, 
     8456793.1400578 
    ], 
    [ 
     1245561.6805815, 
     8456795.528715 
    ], 
    [ 
     1245562.2777458, 
     8456797.9173721 
    ], 
    [ 
     1245564.3678208, 
     8456797.9173721 
    ], 
    [ 
     1245565.7114404, 
     8456802.8439774 
    ] 
    ], 
    [ 
    [ 
     1245560.9341261, 
     8456793.1400578 
    ], 
    [ 
     1245561.6805815, 
     8456795.528715 
    ], 
    [ 
     1245562.2777458, 
     8456797.9173721 
    ], 
    [ 
     1245564.3678208, 
     8456797.9173721 
    ], 
    [ 
     1245565.7114404, 
     8456802.8439774 
    ] 
    ] 
] 

Как я хотел бы массив координат отсортированный:

"coordinates": [ 
    [ 
     [ 
     1245613.4845831, 
     8456782.8389739 
     ], 
     [ 
     1245612.5888367, 
     8456786.5712507 
     ], 
     [ 
     1245611.3945081, 
     8456792.6921846 
     ], 
     [ 
     1245611.9916724, 
     8456795.678006 
     ], 
     [ 
     1245560.9341261, 
     8456793.1400578 
     ], 
     [ 
     1245561.6805815, 
     8456795.528715 
     ], 
     [ 
     1245562.2777458, 
     8456797.9173721 
     ], 
     [ 
     1245564.3678208, 
     8456797.9173721 
     ], 
     [ 
     1245565.7114404, 
     8456802.8439774 
     ], 
     [ 
     1245560.9341261, 
     8456793.1400578 
     ], 
     [ 
     1245561.6805815, 
     8456795.528715 
     ], 
     [ 
     1245562.2777458, 
     8456797.9173721 
     ], 
     [ 
     1245564.3678208, 
     8456797.9173721 
     ], 
     [ 
     1245565.7114404, 
     8456802.8439774 
     ] 

    ] 
+0

Если я правильно поняли, вы хотите извлечь 'coord'? Если это так, вы можете сделать '$ newArr = array ('coord' => $ oldArray ['координат']);' – Antony

+1

Это просто дает мне дополнительный массив "координат": { "координаты" : [ [ [ 1245613,4845831, 8456782,8389739 ], ] Мне нужно все, что внутри основной координаты массива. Если вы посмотрите внимательно, на самом деле есть 3 массива внутри основного массива – boomdrak

ответ

1

Просто итерацию по координатам построить сплющенный массив:

$coordinatesOnly = $original['coordinates']; 
$flattenedCoordinates = []; 
foreach ($coordinatesOnly as $coordinatesSet) { 
    $flattenedCoordinates = array_merge($flattenedCoordinates, $coordinatesSet); 
} 
var_dump($flattenedCoordinates); 

Учитывая исходный массив:

$original = [ 
    'checksum' => 'b29e57b048be1ff004de37679c6f6ea4', 
    'type' => 'LineString', 
    'color' => '#0000ff', 
    'text' => '', 
    'count' => 2, 
    'length' => 1, 
    'coordinates' => [ 
    [ 
     [ 
     1245613.4845831, 
     8456782.8389739 
     ], 
     [ 
     1245612.5888367, 
     8456786.5712507 
     ], 
     [ 
     1245611.3945081, 
     8456792.6921846 
     ], 
     [ 
     1245611.9916724, 
     8456795.678006 
     ] 
    ], 
    [ 
     [ 
     1245560.9341261, 
     8456793.1400578 
     ], 
     [ 
     1245561.6805815, 
     8456795.528715 
     ], 
     [ 
     1245562.2777458, 
     8456797.9173721 
     ], 
     [ 
     1245564.3678208, 
     8456797.9173721 
     ], 
     [ 
     1245565.7114404, 
     8456802.8439774 
     ] ], 
    [ 
     [ 
     1245560.9341261, 
     8456793.1400578 
     ], 
     [ 
     1245561.6805815, 
     8456795.528715 
     ], 
     [ 
     1245562.2777458, 
     8456797.9173721 
     ], 
     [ 
     1245564.3678208, 
     8456797.9173721 
     ], 
     [ 
     1245565.7114404, 
     8456802.8439774 
     ] 
    ] 
    ] 
]; 

Вы получаете то, что вы ожидаете:

array(14) { 
    [0]=> 
    array(2) { 
    [0]=> 
    float(1245613.4845831) 
    [1]=> 
    float(8456782.8389739) 
    } 
    [1]=> 
    array(2) { 
    [0]=> 
    float(1245612.5888367) 
    [1]=> 
    float(8456786.5712507) 
    } 
    [2]=> 
    array(2) { 
    [0]=> 
    float(1245611.3945081) 
    [1]=> 
    float(8456792.6921846) 
    } 
    [3]=> 
    array(2) { 
    [0]=> 
    float(1245611.9916724) 
    [1]=> 
    float(8456795.678006) 
    } 
    [4]=> 
    array(2) { 
    [0]=> 
    float(1245560.9341261) 
    [1]=> 
    float(8456793.1400578) 
    } 
    [5]=> 
    array(2) { 
    [0]=> 
    float(1245561.6805815) 
    [1]=> 
    float(8456795.528715) 
    } 
    [6]=> 
    array(2) { 
    [0]=> 
    float(1245562.2777458) 
    [1]=> 
    float(8456797.9173721) 
    } 
    [7]=> 
    array(2) { 
    [0]=> 
    float(1245564.3678208) 
    [1]=> 
    float(8456797.9173721) 
    } 
    [8]=> 
    array(2) { 
    [0]=> 
    float(1245565.7114404) 
    [1]=> 
    float(8456802.8439774) 
    } 
    [9]=> 
    array(2) { 
    [0]=> 
    float(1245560.9341261) 
    [1]=> 
    float(8456793.1400578) 
    } 
    [10]=> 
    array(2) { 
    [0]=> 
    float(1245561.6805815) 
    [1]=> 
    float(8456795.528715) 
    } 
    [11]=> 
    array(2) { 
    [0]=> 
    float(1245562.2777458) 
    [1]=> 
    float(8456797.9173721) 
    } 
    [12]=> 
    array(2) { 
    [0]=> 
    float(1245564.3678208) 
    [1]=> 
    float(8456797.9173721) 
    } 
    [13]=> 
    array(2) { 
    [0]=> 
    float(1245565.7114404) 
    [1]=> 
    float(8456802.8439774) 
    } 
} 
+1

Вы так правы! Большое вам спасибо за то, что помогли мне скрыть очевидное: подумайте, что это лучший ответ из-за деталей – boomdrak

1

Вы можете перебрать вложенные значения и объединить их все в новом массиве: здесь, $old начальной coordinates Вложенного массива ,

$new = array(); 
foreach($old as $oldNest){ 
    $new = array_merge($new, $oldNest); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^