2016-08-24 4 views
0

長いデータ型のデータを成功した時刻に変換しようとしています。 各セッションの時間配列には、["1276999","787878","677267"]のような値があります。私はこの配列をarray_map関数に渡し、動作している時間に変換しました。H:i:sを分に変換するだけですが、エラーを返すarray_map()

は今convert_time関数内で私は(i.e 1:40:00 to 100 minutes)たびに変換されますどのarray_mapを使用して、別の関数を呼び出していますが、問題は私に配列する第二パラメータをarray_mapを必要とすることにエラーを与えている私の第二の配列マップ機能です。 1970年1月1日からの経過秒 - - ..

$each_session_time = array(); 

for ($i=0; $i<sizeof($array_in_time_str) ; $i++) { 
    $each_session_time[$i]=$array_out_time_str[$i]-$array_in_time_str[$i]; 
} 

//session time in hours 
array_map("convert_to_time", $each_session_time); 

function convert_to_time($each_session) { 
    # code... 
    $each_sess_time=array(); 
    $each_sess_time=date("H:i:s",$each_session); 
    array_map("get_minutes",$each_sess_time); 
    return $each_sess_time; 
} 

function get_minutes($session_time) { 
    // algorithm to convert each session time to minutes) 
} 
+0

を必要とするどのようなデータに応じて、そのオブジェクトにDateTime::format("H:i:s")DateTime::format("i")を使用してDateTimeオブジェクト(http://php.net/manual/en/class.datetime.php)を使用することができ

あなた以来 'array_map'を必要としないように思えます一度に1つの値を変換することにのみ関心があります。 'get_minutes($ each_sess_time)'を直接呼び出す –

+0

'array_map(" get_minutes "、$ each_sess_time)'ここで '$ each_sess_time'は単一の値です。ここで 'array_map'を使っていますか? –

答えて

1

convert_to_time機能からarray_map("get_minutes",$each_session_time);を移動する必要があります。

例:あなたを考慮し

<?php 
$each_session_time=["1276999","787878","677267"]; 

//session time in hours 
$times = array_map("convert_to_time", $each_session_time); 
$minutes = array_map("get_minutes",$times); 

function convert_to_time($each_session) 
{ 
    # code... 
    $each_sess_time=array(); 
    $each_sess_time=date("H:i:s",$each_session); 

    return $each_sess_time; 
} 

function get_minutes($session_time) 
{ 
    //algo to convert each session time to minutes) 
} 

print_r($minutes); 
1

それはあなたが有効なタイムスタンプを始めているようですので、数分で2つの値の間の差異を取得するには、あなただけの一方から他方を減算する必要があるとを掛け60.

もっとコントロールしたい場合はoあなたのデータは、後で別のフォーマットにするなど、今使っている2つのタイムスタンプと文字列の違いではなく、DateIntervalオブジェクトを使うことをお勧めします。 2つのタイムスタンプの違いは有効なタイムスタンプ自体ではないため、date()を使用してフォーマットすることはできません。

+0

@jeron私は親切にも私はPHP開発の初心者ですので、コードを改善するのを助けると知っています – iqra

+0

@iqraそれはあなたが望むものは本当に明確ではない、あなたは関数呼び出しの結果で何もしていません。あなたの入力は何ですか?あなたは出力として何をしたいですか? – jeroen

+0

ok @jeoren letmeはあなたのために達成しようとしていることを詳しく説明します – iqra

1

のような文字列を使用して作業している ":YY:XX ZZ" あなたは

$split = explode(":",$session_time); $minutes = $split[1]; 

は、文字列の "i" の部分を取得しようとすることができます。あなたはまた、最初のループでnew DateTime($each_session);をやって、あなたが

関連する問題