1

私は2つのベクトルを持っていました。1 つは時間値、もう 1 つは速度値です。同じ時間間隔の平均速度値を取得する必要があります。元。

$time=array('18:00:00', '18:00:00', '19:15:00', '19:15:00', '20:30:00');
$v=array(10, 20, 30, 70, 60);

ベクトルを取得する必要があります: $v_optimized(15, 50, 60); 値 '15' は値1020の平均速度であり、すべての値の$v同じ時間 ' 18:00:00' などに対応します。

私はこのコードを書きましたが、何かが欠けています。誰か助けてください。

$time=array('18:00:00', '18:00:00', '19:15:00', '19:15:00', '20:30:00');
$v=array(10, 20, 30, 70, 60);
$time_opt= array();
$v_opt= array();
$start=0;
$count=0;
$end=0;
$sum=0;
$nr=count($time);
for($i=0; $i<$nr-2; $i++){
for($j=$i+1; $j<$nr-1; $j++){
$start = $i;

if($time[$j]==$time[$j+1]){
$time_opt[$i]=$time[$i];
$count++;
$sum+= $v[$j];
}
else{
$avg = $sum / $count;
array_push($v_opt, $avg);
//$count = 0;
}
}}
for($k=0;$k<count($v_opt); $k++)
echo $v_opt[$k].'<br>';
4

1 に答える 1

1

私が理解できる限り、これはあなたが望むものです..試してみてください

<?php

        $time=array('18:00:00', '18:00:00', '19:15:00', '19:15:00', '20:30:00');
        $v=array(10, 20, 30, 70, 60);

        // get total of vector for a given time
        $temp_arr = array();

        foreach($time as $key=>$value)
        {
           $temp_arr[$value] = $temp_arr[$value]+$v[$key] ;
        }


        // count the repititons
        $count_val_time = array_count_values($time);

        // your required array
        $req_arr = array();

        foreach($temp_arr as $key=>$value)
        {
           $req_arr[$key] = $value/($count_val_time[$key]);
        }

        print_r($req_arr);

        ?>
于 2013-03-18T09:58:40.143 に答える