2017-07-06 6 views
3

私は比較に基づいてオブジェクトをフィルタリングする方法を理解しようとしています。時間が1時間以内の場合はPHPのarray_filter

15件の結果....

stdClass Object 
(
    [FlightInfoExResult] => stdClass Object 
     (
      [next_offset] => 15 
      [flights] => Array 
       (
        [0] => stdClass Object 
         (
          [faFlightID] => SWA2078-1499232401-airline-0885 
          [ident] => SWA2078 
          [aircrafttype] => B738 
          [filed_ete] => 03:00:00 
          [filed_time] => 1499232401 
          [filed_departuretime] => 1499477700 
          [filed_airspeed_kts] => 423 
          [filed_airspeed_mach] => 
          [filed_altitude] => 0 
          [route] => 
          [actualdeparturetime] => 0 
          [estimatedarrivaltime] => 1499489100 
          [actualarrivaltime] => 0 
          [diverted] => 
          [origin] => KPHX 
          [destination] => KMKE 
          [originName] => Phoenix Sky Harbor Intl 
          [originCity] => Phoenix, AZ 
          [destinationName] => General Mitchell Intl 

と私は唯一[filed_departuretime]は、クエリ結果の1時間以内である[flights]を返すように、このオブジェクトをフィルタ処理する必要があるが、私は、次のようになりますオブジェクトを取得$time = strtotime($item['departure_time']);

abs($object->filed_departuretime - $time) <= 3600) 

うまくいけば、このすべてが理にかなって、あなたの助けに感謝します。このような何かを行うことによって

:)私は本当にarray_filterはそう、これは私がこれまで持っているものであるどのように動作するかを知らない....

//set flight identity 
$ident = $item['airline'].$item['flight_number']; 
$date = date('Y-m-d H:i:s'); 
$time = strtotime($item['departure_time']); 

//get flightaware results 
$flightAwareResult = FlightInfoEx($ident); 

/*$flightResult = array_filter(
    $flightAwareResult, 
);*/ 
+0

追加のコンテキストがあるようにPHPコードを投稿してください。 – TBowman

+0

さて、私はまだarray_filterの仕組みを理解していないので、まだ何も持っていません! –

+0

は私がこれまでに持っていたものを追加しました。 –

答えて

0

アレイフィルタ配列を取り、関数を使用して各要素を渡します。関数が真の値を返す要素だけを保持します。例:

//set flight identity 
$ident = $item['airline'].$item['flight_number']; 
$date = date('Y-m-d H:i:s'); 
$time = strtotime($item['departure_time']); 

//get flightaware results 
$flightAwareResult = FlightInfoEx($ident); 
$filtered_array = array_filter($flightAwareResult->FlightInfoExResult->flights, function ($value) use ($time) { 
     return $time - $value->filed_departuretime) <= 3600; 
}); 
0

ちょうどあなたのオブジェクト変数名を入れ$objectの代わりにこの

$object=''; 
$object=json_decode(json_encode($object,true),true); 
$result=array_map(function ($array){ 
    $time = strtotime($array['departure_time']); 
    if(($array['filed_departuretime'] - $time) <= 3600){ 
     return $array; 
    } 
},$object['FlightInfoExResult']['flights']); 
$result=array_filter($result); 

を試してみてください。

お手数ですが、

+0

は無効な文字列オフセットを に取得しました}、$ object ['FlightInfoExResult'] ['flights']); –

+0

「$ object = json_decode($ object、true)、true);」と '$ item ['departure_time']'オブジェクトのo/pがどのようにオブジェクトか他のオブジェクトに存在するかを表示できますか変数? –