Với mã bạn đã đăng, đây là cách tôi xử lý điều này.
Đầu tiên, tôi sẽ tạo một mảng tra cứu kết hợp có khóa là tên cột và giá trị của nó là giá trị điểm tương ứng; nó sẽ trông giống như thế này:
$pointVals = array('email1' => 2, 'email2' => 5, 'email3' => 2, ... );
Bạn có thể tạo mảng này theo bất kỳ cách nào bạn muốn; Tôi có lẽ đã đọc nó từ một bảng tra cứu trong cơ sở dữ liệu. Lưu ý rằng mảng này chỉ chứa các cột có liên quan đến phép tính.
Tiếp theo, tôi sẽ bao gồm mã sau bên trong while
vòng. $row
là mảng bản ghi được trả về bởi cuộc gọi của bạn tới mysql_fetch_array()
.
while ($row = mysql_fetch_array($result)) {
... // existing code goes here
$rowSum = 0;
foreach($pointVals as $colName => $val)
{
if(isset($row[$colName]) && !empty($row[$colName]))
$rowSum += $val;
}
... // do stuff with $rowSum here
}
Đã nói rằng, tôi thực sự khuyến khích bạn chuyển đổi từ mysql trình điều khiển đến mysqli hoặc PDO , là mysql không được dùng nữa và đã bị xóa khỏi PHP 7. Ngoài ra, tôi thực sự nghi ngờ rằng truy vấn của bạn có thể được đơn giản hóa và cải thiện, nhưng tôi cần xem bảng cơ sở để đề xuất bất kỳ điều gì.