我需要用相应的开始值和结束值减去替换所有总值。值来自sql结果 有什么帮助怎么做? 对于Ex:
12.30 - 5.00 = 7.30
15.30 - 7.00 = 8.30
16.30 - 9.00 = 7.30
现有数组
array(184) {
[1]=>
array(3) {
["start"]=>
string(4) "5.00"
["end"]=>
string(4) "12.30"
["total"]=>
string(4) "1.00"
}
[2]=>
array(3) {
["start"]=>
string(4) "7.00"
["end"]=>
string(4) "15.30"
["total"]=>
string(4) "1.00"
}
[3]=>
array(3) {
["start"]=>
string(4) "9.00"
["end"]=>
string(4) "16.30"
["total"]=>
string(4) "1.00"
}
... // more records are there
}
替换了最终数组
array(184) {
[1]=>
array(3) {
["start"]=>
string(4) "5.00"
["end"]=>
string(4) "12.30"
["total"]=>
string(4) "7.30"
}
[2]=>
array(3) {
["start"]=>
string(4) "7.00"
["end"]=>
string(4) "15.30"
["total"]=>
string(4) "8.30"
}
[3]=>
array(3) {
["start"]=>
string(4) "9.00"
["end"]=>
string(4) "16.30"
["total"]=>
string(4) "7.30"
}
... // more records are there
}
答案 0 :(得分:3)
试试这个:
foreach($array as &$v){
$v['total'] = $v['end']-$v['start'];
}
答案 1 :(得分:2)
你可以像@Akam建议的那样做,或者你可以做很长的事情
$array = array(
array('start' => '5.00', 'end' => '12.30', 'total' => '1.00'),
array('start' => '7.00', 'end' => '15.30', 'total' => '1.00'),
array('start' => '9.00', 'end' => '16.30', 'total' => '1.00'),
);
array_walk($array,
function(&$arr) {
$arr['total'] = $arr['end'] - $arr['start'];
}
);
var_dump($array);
答案 2 :(得分:2)
试试这个
$array = array(
array('start' => '5.00', 'end' => '12.30', 'total' => '1.00'),
array('start' => '7.00', 'end' => '15.30', 'total' => '1.00'),
array('start' => '9.00', 'end' => '16.30', 'total' => '1.00'),
);
foreach($array as $key=>$val){
$array[$key]['total'] = $val['start']+$val['end'];
}
var_dump($array);
答案 3 :(得分:2)
将此功能添加到您的代码中:
function timeDiff($first, $second) {
return str_replace(':', '.',
strtotime(str_replace('.', ':', $second)) -
strtotime(str_replace('.', ':', $first))
);
}
然后将您的数组分配到$array
变量并使用Akam的答案中提供的代码,只需将y-x
更改为timeDiff(x,y)
:
foreach($array as &$v){
$v['total'] = timeDiff($v['start'], $v['end']);
}
应该这样做:)
答案 4 :(得分:0)
for($i=1; $i<= count($my_array); $i++){
$end= str_replace('.',':',$my_array[$i]['end']);
$start = str_replace('.',':',$my_array[$i]['start']);
$my_array[$i]['total'] =gmdate("H:i",strtotime($end)-strtotime($start));
}
这里我使用for循环来更改数组中的所有实例。最后以H:i格式打印。