2016-07-22 52 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