bot
bot

Reputation: 4921

Repeating output of an array

    $timein_out = $this->time_model->get_timein_out($this->input->get('i'));   

    $total_diff= array();
    $hours = array();
    $mins =array();

    foreach($timein_out as $timetest)
     {
        $total_diff[] = strtotime($timetest["Time_out"]) - strtotime($timetest["Time_in"]);

        for($key=0;$key<count($total_diff);$key++)
        {
            $hours[] = intval(floor($total_diff[$key]/3600));
            $mins[] =  intval(($total_diff[$key]-$hours[$key]*3600)/60); 
        }

     };

     echo json_encode($total_diff); // output: [33600,34560,35160]
     echo json_encode($hours); // [9,9,9,9,9,9]
     echo json_encode($mins); //[20,20,36,20,36,46]

The actual output should be

 echo json_encode($hours); // [9,9,9,]
 echo json_encode($mins); //[20,36,46]

Question: Why is the output repeating? what is the problem in my code? :( thanks.

Upvotes: 1

Views: 43

Answers (2)

bansi
bansi

Reputation: 57062

may be you want the inner loop outside. try this.

 foreach($timein_out as $timetest)
 {
    $total_diff[] = strtotime($timetest["Time_out"]) - strtotime($timetest["Time_in"]);

 }
 for($key=0;$key<count($total_diff);$key++)
 {
     $hours[] = intval(floor($total_diff[$key]/3600));
     $mins[] =  intval(($total_diff[$key]-$hours[$key]*3600)/60); 
 }

Upvotes: 3

Sudhir Bastakoti
Sudhir Bastakoti

Reputation: 100205

may be try unset()'ting the $total_diff like:

foreach($timein_out as $timetest) {
    $total_diff[] = strtotime($timetest["Time_out"]) - strtotime($timetest["Time_in"]);

    for($key=0;$key<count($total_diff);$key++) {
        $hours[] = intval(floor($total_diff[$key]/3600));
        $mins[] =  intval(($total_diff[$key]-$hours[$key]*3600)/60); 
    }
    unset($total_diff);
}

Upvotes: 1

Related Questions