2013-03-11 2 views
0

안녕하세요 여러분, 데이터베이스 테이블에서 일부 레코드를 읽는 mysql 쿼리가 있습니다. $ key-> r4, $ key-> sr13 및 $ key-> huawei 필드는 완벽하게 표시되지만 세 가지의 합계를 구할 수는 없습니다.은 쿼리에서 int 값을 더할 수 없습니다.

$total_r4=0;$total_sr13=0;$total_huawei=0; 
    foreach($view_data->result() as $key){ 
     $total_r4  += $key->r4; 
     $total_sr13  += $key->sr13; 
     $total_huawei += $key->huawei; 
     echo "<tr>"; 
     echo "<td>$key->date"; 
     echo "<td>$key->time"; 
     echo "<td>$key->r4"; 
     echo "<td>$key->sr13"; 
     echo "<td>$key->huawei"; 
     echo "<td>".$key->r4 + $key->sr13 + $key->huawei; 

    } 

문제는 3 개 변수가 SUMed되지 않은 마지막 줄에 실제로 : 여기 내 코드입니다!

+1

마크 업 </td>로하면이 시도"($ key-> r4 + $ key-> sr13 + $ key-> huawei); –

+0

오. 당신 exculuber .. 감사합니다! Me fool – goseo

+0

그리고 ''마크 업으로 'TD'를 닫는 것을 잊지 마라. – sdespont

답변

0

보십시오

. 문자열 연결 연산자와 + 산술 가산 연산자가 동일한 우선 순위를 갖고, Operator Precedence 아래에 설명 된 바와 같이
... 
$total_r4  += $key->r4; 
$total_sr13  += $key->sr13; 
$total_huawei += $key->huawei; 
$tdTotal = ($key->r4 + $key->sr13 + $key->huawei); 
..... 
echo "<td>".$tdTotal."</td>"; 
0

. 그들은 왼쪽 연관 적이기 때문에 왼쪽에서 오른쪽으로 평가됩니다. 대신 echo 문에 여러 매개 변수를 선호 문자열 연결을 사용하지 않는 다른

echo "<td>". ($key->r4 + $key->sr13 + $key->huawei); 

또는 :

echo (("<td>".$key->r4) + $key->sr13) + $key->huawei; 

대안 평가 순서를 강제하거나 명시 적 괄호를 사용하려면, 따라서 현재의 표현으로 평가 :

echo "<td>", $key->r4 + $key->sr13 + $key->huawei; 

이 두 번째 방법은 PHP가 연결 문자열 in-m을 빌드 할 필요가 없으므로보다 효율적입니다 에 모리. 하나는 변수 확장이 필요하지 않은 단일 인용 리터럴을 사용하여 이중 인용 된 문자열의 불필요한 구문 분석 문자를 방지 할 수 있습니다 :

echo '<td>', $key->r4 + $key->sr13 + $key->huawei; 
0

이 PHP를 사용하여 합계를 수행,하지만 inval를 사용하여 데이터를 변환하는 것을 잊지 마세요 또는,545 "에코 :

echo "<td>".(intval($key->r4) + intval($key->sr13) + intval($key->huawei))."</td>; 

floatval 종료 잊지 마세요는 TD

+0

'r4','sr13' 및'huawei'는 같은'$ key' 행의 필드 인 것처럼 보일 것입니다; 그러므로 MySQL의'SUM()'집계 함수는 부적절 할 것이다. (원한다면 선택 목록에서 대신'+'연산자를 사용할 수있다.) – eggyal

관련 문제