2012-11-24 6 views
2

안녕하세요2 차원 배열을 합하는 방법

여기에 질문이 있습니다. $ duration_c [$ k] [$ s]라는 두 개의 배열이 있습니다. 이는 인쇄 모두 합보다

$duration_c[0][0]="19:30:00"; 
$duration_c[0][1]="00:10:00"; 

$duration_c[1][0]="00:30:00"; 
$duration_c[1][1]="00:20:00"; 

확인 duration_c $ 합계를 어떻게

$times=$duration_c[$k][$s]; 
function sum_the_time($times) { 

    $seconds = 0; 
    foreach ($times as $time) 
    { 
    list($hour,$minute,$second) = explode(':', $time); 
    $seconds += $hour*3600; 
    $seconds += $minute*60; 
    $seconds += $second; 
} 
    $hours = floor($seconds/3600); 
    $seconds -= $hours*3600; 
    $minutes = floor($seconds/60); 
    $seconds -= $minutes*60; 
    // return "{$hours}:{$minutes}:{$seconds}"; 
    return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds); 
} 
echo sum_the_time($times); 

[0] [0] + $ duration_c [0] [1] duration_c $ [1] [0] + $ duration_c [1] [1] 및 인쇄 방법은 무엇입니까? 오류의 foreach에 대한 공급 잘못된 인수()

+0

및 = $ 기간 _c [$ k] [$ s]; statement –

+1

당신이 새 소식을 접했습니다. 95 %의 신규 사용자가 대답 중 하나를 받아들이지 않는 경향이 있다는 것을 알았습니다. 투표 화살표 아래에있는 "이 대답 수락"표시를 확인하여 자신의 필요에 가장 잘 맞는 투표를 확인하십시오. – Flavius

답변

1

당신이 $times=$duration_c[$k][$s]; $ 번으로 기능을 sum_the_time하는 하나 개의 값을 보내는 것은 인쇄이

$times=$duration_c[$k][$s]; 
echo $times; 

사용과 같이 작성하여 값이 함수에 무슨 일이 일어나고 있는지 확인할 수 있습니다 하나 개의 값을 가지고

$times=$duration_c[$k]; 

배열을 함수에 보내면 foreach가 오류를주지 않습니다.

$times=$duration_c[$k]; // contains array of times 
function sum_the_time($times) { 

    $seconds = 0; 
    foreach ($times as $time) 
    { 
    list($hour,$minute,$second) = explode(':', $time); 
    $seconds += $hour*3600; 
    $seconds += $minute*60; 
    $seconds += $second; 
} 
    $hours = floor($seconds/3600); 
    $seconds -= $hours*3600; 
    $minutes = floor($seconds/60); 
    $seconds -= $minutes*60; 
    // return "{$hours}:{$minutes}:{$seconds}"; 
    return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds); 
} 
echo sum_the_time($times); 
,
+1

지금 오류가 없습니다 – ganaa

+0

은 적절한 값을주고 있습니다. –

+0

+1, 분명히 좋은 해결책입니다. – Flavius

0

$times=$duration_c[$k][$s];$times=$duration_c[$k];해야한다, 그렇지 않으면 당신은 기능이 아니라 시간의 배열에 하나의 시간을 통과되어있다.

+0

답장을 보내 주셔서 감사합니다 – ganaa

1

이 PHP 코드 덜을 수행하고, 실행 C 작성된 상기 PHP 런타임에서만큼 가능한 유동 유지 : $ 시간에 $들 $ K의 값이 무엇인지

<?php 
$duration_c[0][0]="19:30:00"; 
$duration_c[0][1]="00:10:00"; 

$duration_c[1][0]="00:30:00"; 
$duration_c[1][1]="00:20:00"; 

$sum = 0; 
foreach($duration_c as $durations) { 
    $today = strtotime('today'); 
    $sum += array_sum(array_map(function($str) use ($today) { 
     return strtotime($str)-$today; 
    }, $durations)); 
} 
echo $sum; // 73800 seconds, that's 20.5 hours 
관련 문제