2016-10-24 10 views
0

他の配列の値に基づいて、指定された配列の多次元配列を作成したいと思います。別の配列の値に基づいて配列を分割する

私はこのような配列を有する:私は基本的に3を作成する二番目の配列で所定の位置で第1のアレイを分割したい

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

"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") 
) 

このような別の配列を分割値内にある最初の配列の値を持つ配列。

ので、出力は次のようになります。誰かに理にかなって

"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

ありがとう、foreachのforループを変更しました。 – user3099298

+0

さらに正確で健全なロジック。良い –

関連する問題