2016-10-24 4 views
0

ОК, поэтому я хотел бы создать многомерный массив для заданного массива на основе значений в другом массиве.Разделить массив на основе значения другого массива

У меня есть массив как это:

"coordinatesArray" => array(
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:17 +1000","latitude"=>"-37.787229","longitude"=>"144.940128","speed"=>"0.0"), 
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:18 +1000","latitude"=>"-37.789705","longitude"=>"144.942424","speed"=>"0.0"), 
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:19 +1000","latitude"=>"-37.792537","longitude"=>"144.946029","speed"=>"0.0"), 
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:20 +1000","latitude"=>"-37.795487","longitude"=>"144.949891","speed"=>"0.0"), 
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:21 +1000","latitude"=>"-37.797302","longitude"=>"144.951930","speed"=>"0.0"), 
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:22 +1000","latitude"=>"-37.799319","longitude"=>"144.954419","speed"=>"0.0"), 
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:23 +1000","latitude"=>"-37.800879","longitude"=>"144.956372","speed"=>"0.0") 
) 

и другой массив как это:

"coordinatesSplitMarkerArray" => array(
    array("latitude"=>"-37.789705","longitude"=>"144.942424"), 
    array("latitude"=>"-37.799319","longitude"=>"144.954419") 
) 

Я хотел бы разделить первый массив в позициях, заданных во втором массиве по существу создавая 3 массивы со значениями из первого массива, которые попадают в значения split.

Так вывод должен быть:

"coordinatesArray" => array(
    array(
     array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:17 +1000","latitude"=>"-37.787229","longitude"=>"144.940128","speed"=>"0.0"), 
    ), 
    array(
     array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:18 +1000","latitude"=>"-37.789705","longitude"=>"144.942424","speed"=>"0.0"), 
     array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:19 +1000","latitude"=>"-37.792537","longitude"=>"144.946029","speed"=>"0.0"), 
     array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:20 +1000","latitude"=>"-37.795487","longitude"=>"144.949891","speed"=>"0.0"), 
     array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:21 +1000","latitude"=>"-37.797302","longitude"=>"144.951930","speed"=>"0.0"), 
    ), 
    array(
     array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:22 +1000","latitude"=>"-37.799319","longitude"=>"144.954419","speed"=>"0.0"), 
     array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:23 +1000","latitude"=>"-37.800879","longitude"=>"144.956372","speed"=>"0.0") 
    ) 
) 

Надежда, что имеет смысл для кого-то.

Благодаря

+6

ты пытался что-нибудь? да? то покажи нам –

+0

Просто нашел намного более простой способ. Вместо сохранения соответствующих значений lat/lng я просто сохраню позицию, в которой массив должен быть разделен. Спасибо, что посмотрели. – puks1978

+0

Приятно слышать это. Звуки хорошие! –

ответ

1

Проверить это,

<?php 
$coordinatesArray = array(
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:17 +1000","latitude"=>"-37.787229","longitude"=>"144.940128","speed"=>"0.0"), 
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:18 +1000","latitude"=>"-37.789705","longitude"=>"144.942424","speed"=>"0.0"), 
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:19 +1000","latitude"=>"-37.792537","longitude"=>"144.946029","speed"=>"0.0"), 
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:20 +1000","latitude"=>"-37.795487","longitude"=>"144.949891","speed"=>"0.0"), 
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:21 +1000","latitude"=>"-37.797302","longitude"=>"144.951930","speed"=>"0.0"), 
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:22 +1000","latitude"=>"-37.799319","longitude"=>"144.954419","speed"=>"0.0"), 
    array("altitude"=>"88.9201049804688","dateAdded"=>"2016-10-19 09:04:23 +1000","latitude"=>"-37.800879","longitude"=>"144.956372","speed"=>"0.0") 
); 


$coordinatesSplitMarkerArray = array(
    array("latitude"=>"-37.789705","longitude"=>"144.942424"), 
    array("latitude"=>"-37.799319","longitude"=>"144.954419") 
); 

$data = array(); 
$new = 0; 
$splitMarker = 0; 
foreach($coordinatesArray as $i=>$value){ 
    if($coordinatesSplitMarkerArray[$splitMarker]['latitude'] == $coordinatesArray[$i]['latitude'] && $coordinatesSplitMarkerArray[$splitMarker]['longitude'] == $coordinatesArray[$i]['longitude']){ 
     $new++; 
     if(count($coordinatesSplitMarkerArray)-1>$splitMarker){ 
      $splitMarker++; 
     } 
    } 
    $data[$new][] = $coordinatesArray[$i]; 
} 

echo "<pre>"; 
print_r($data); 
echo "</pre>"; 
?> 
+1

хорошая логика. +1 с моей стороны. только одна коррекция '$ i

+0

Спасибо, я изменил цикл for foreach. – user3099298

+0

еще более точная и надежная логика. Хорошо –

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