2016-07-22 41 views
0

我可以簡化這段代碼嗎?我從SELECT查詢中獲取五個字符串,將它們拆分爲只有數字並添加它們。使用循環來簡化preg_replace

$sum = preg_replace("/[^0-9]/","",$row['AB']) + preg_replace("/[^0-9]/","",$row['CD']) + preg_replace("/[^0-9]/","",$row['EF']) + preg_replace("/[^0-9]/","",$row['GH']) + preg_replace("/[^0-9]/","",$row['IJ']); 

我可以做這樣的事情:

preg_replace("/[^0-9]/","",$sum = $row['AB'] + $row['CD'] + $row['EF'] + $row['GH'] + $row['IJ']); 

回答

1

你可以寫一個簡單的循環,以減少重複代碼:

前提是你的SQL只選擇需要的列:

$sum = 0; 
foreach($row as $item) 
    $sum += preg_replace("/[^0-9]/","",$item); 

如果行中有更多的列(並且實際上需要這些數據,那麼您不能只更改S QL):

$sum = 0; 
foreach(['AB','CD','EF','GH','IJ'] as $key) 
    $sum += preg_replace("/[^0-9]/","",$row[$key]); 
+0

哇,謝謝!當等待結束時,我會接受你的回答:) –

+0

沒問題。作爲一個方面說明,如果你必須頻繁地運行代碼(例如,不只是每週的某個報告),那麼我會重構數據庫以將所需的數據包含在integar列中,這樣你就可以在SQL中進行數學運算 – Steve