2

DBへのcsvインポートの1つに、「24h 30m」のようなフィールド値があります

これを分解して 2 つの数値セットを分離するにはどうすればよいですか? これが私がこれまでに持っているものです

$tasktime  = "24h 30m";
$pieces = explode("h ", $tasktime);
echo $pieces[0]; // want this to echo 24
echo $pieces[1]; // want this to echo 30
4

5 に答える 5

6

簡単(デモ

$pieces = array_map('intval', explode(' ', "24h 30m"));

これにより、文字列がスペースで分割され、2つの要素のそれぞれから整数値が取得されます。

さらなる参照:

于 2012-10-05T21:16:45.300 に答える
1
$tasktime  = "24h 30m";
$pieces = explode("h ", $tasktime);
$pieces[1] = rtrim($pieces[1], "m");
echo $pieces[0]; // want this to echo 24
echo $pieces[1]; // want this to echo 30

私は実際にはphpを知りませんが、これは私には理にかなっています。

于 2012-10-05T21:18:26.480 に答える
0

これはうまくいきました。ありがとう!

$tasktime  = "24h 30m";
$pieces = array_map('intval', explode(' ', $tasktime));
于 2012-10-05T21:18:32.083 に答える
0

これを正規表現として記述する方法は次のとおりです。

$tasktime = "24h 30m";
preg_match('/(\d+)h (\d+)m/', $tasktime, $pieces);
echo $pieces[1]; // echoes 24
echo $pieces[2]; // echoes 30
于 2012-10-05T21:40:27.640 に答える
0

常にその形式の場合、これを実行してDateIntervalオブジェクトを取得できます。

$tasktime  = "24h 30m";    
$interval = new DateInterval('PT' . strtoupper(str_replace(' ', '', $tasktime)));

print_r($interval);

出力

DateInterval Object
    (
        [y] => 0
        [m] => 0
        [d] => 0
        [h] => 24
        [i] => 30
        [s] => 0
        [invert] => 0
        [days] =>
    )
于 2012-10-05T21:20:12.567 に答える