0

次の配列(date、task、actor、hh:mm)を持つphpスクリプトがあります。

配列
((
    [0] => 2013-01-29|映画を作る|ローレル|07:30
    [1] => 2013-01-29|映画を作る|ハーディ|00:30
    [2] => 2013-01-29 |PHPの学習|ハーディ|07:00
    [3] => 2013-01-29|サインを歌う|キートン|07:30
    [4] => 2013-01-29|映画を作る|ロイド|07:30
    [5] => 2013-01-28 |PHPの学習|ローレル|07:30
    [6] => 2013-01-28|映画を作る|ハーディ|07:30
    [7] => 2013-01-28 |PHPの学習|キートン|07:30
    [8] => 2013-01-28|映画を作る|ロイド|07:30
    [9] => 2013-01-27 |PHPの学習|ローレル|05:30
    [10] => 2013-01-27|映画を作る|ローレル|02:30
    [11] => 2013-01-27 |PHPの学習|ハーディ|07:30
    [12] => 2013-01-27|映画を作る|キートン|07:30
    [13] => 2013-01-27|映画を作る|ロイド|07:30
)。

タスクを一覧表示し、各タスクの時間値を合計するフィルターを作成したいと思います。次に例を示します。

PHPの学習(<-選択されたオプション)

2013-01-29 Hardy  07:00
2013-01-28 Laurel 07:30
2013-01-28 Keaton 07:30
2013-01-27 Laurel 05:30
2013-01-27 Hardy  07:30
=======================
TOTAL             35:00

これを実現する方法は何でしょうか?どんな提案や次のステップも大歓迎です。

4

1 に答える 1

0

多次元配列がある場合、これはフィルタリングが簡単になります。ただし、このようなものは現在の構造では機能します。

$task = "Learning PHP";

foreach($arr as $k=>$v) {
    $pieces = explode("|", $v);
    if($pieces[1]==$task) {
        $total += (int) str_replace(':','',$pieces[3]);
        echo $pieces[0] . " " . $pieces[2] . " " . $pieces[3];
    }
}

echo "Total: " . $total;
于 2013-01-30T11:39:51.340 に答える