Loops &引用;return";在foreach中,只返回一组结果,而echo返回所有结果
我不知道为什么它会返回我用echo查找的所有值,但只有一个设置为“return” 我删除了第一个foreach语句中的所有代码,以查看foreach语句之间是否存在冲突,但返回的结果相同 我在这里尝试了一些我认为可能相关的建议,但没有任何运气 我可能做错了什么Loops &引用;return";在foreach中,只返回一组结果,而echo返回所有结果,loops,return,Loops,Return,我不知道为什么它会返回我用echo查找的所有值,但只有一个设置为“return” 我删除了第一个foreach语句中的所有代码,以查看foreach语句之间是否存在冲突,但返回的结果相同 我在这里尝试了一些我认为可能相关的建议,但没有任何运气 我可能做错了什么 function getInvoiceTimeLog($project_unique_id, $user_id, $user_timezone, $time_format) { global $db; $query =
function getInvoiceTimeLog($project_unique_id, $user_id, $user_timezone, $time_format)
{
global $db;
$query = "SELECT t.task_id, t.unique_id, t.name, t.description, t.sub_total, p.project_id, p.user_id FROM task as t, task_project as tp, project as p WHERE t.task_id = tp.task_id AND tp.project_id = p.project_id AND p.unique_id = ".$db->prep($project_unique_id)." AND p.user_id = ".$db->prep($user_id)." ORDER BY t.name";
$res = $db->query($query,'assoc');
if($res != false)
{
foreach($res as $row1):
$date = '';
$prevDate = '';
$return = '';
$query = "SELECT a.track_id FROM task_track a INNER JOIN track_time b ON a.track_id = b.track_id WHERE a.task_id =".$db->prep($row1['task_id'])." ORDER BY FROM_UNIXTIME(b.time_start,'%Y-%m-%d %H:%i:%s') DESC";
$resT = $db->query($query,'assoc');
$return .= '<div class="table" id="InvoicetimeLog"><div class="thead"><div class="th date">Date</div><div class="th start">Start</div><div class="th stop">Stop</div><div class="th hours">Hours</div></div><ul class="list">';
$return .= '<li>'.$row1['description'].'</li>';
if($resT != false)
{
foreach($resT as $row):
$track_id = $row['track_id'];
$query = "SELECT comment_id FROM track_comment WHERE track_id = ".$db->prep($track_id);
$resComLink = $db->query($query,'assoc');
if($resComLink != false)
{
$query = "SELECT comment,time_left FROM comment WHERE comment_id = ".$db->prep($resComLink[0]['comment_id']);
$resComment = $db->query($query,'assoc');
$comment_class = 'comment_has';
}
else
{
$comment = '';
$comment_class = 'comment';
}
$query = "SELECT time_start,time_end FROM track_time WHERE track_id = ".$db->prep($track_id);
$resTime = $db->query($query,'assoc');
$date = format_time($resTime[0]['time_start'],'m/d/y');
if($date != $prevDate)
{
$prevDate = format_time($resTime[0]['time_start'],'m/d/y');
$timeLog_ex = '<div class="date bold">'.$prevDate.'</div>';
$group = 'grp_shw';
}
else
{
$timeLog_ex = '<div class="date bold"></div>';
$group = 'grp_no';
}
if($time_format == 'g')
{
$the_time_format = 'g:i a';
}
else
{
$the_time_format = 'G:i';
}
if(empty($resTime[0]['time_end']))
{
$return .= '<li class="'.$group.'" id="rtrack_'.$track_id.'">'.$timeLog_ex.'<div class="start inlineEdit">'.date('m/d/y - '.$the_time_format,$resTime[0]['time_start']).'</div><div class="stop" title="The current time is at '.date($the_time_format,$db->nowUnix($user_timezone)).'">Current</div><div class="hours">'.getTimeDifference($resTime[0]['time_start'],$db->nowUnix($user_timezone)).'</div></li>';
}
else
{
$return .= '<li class="'.$group.'" id="rtrack_'.$track_id.'">'.$timeLog_ex.'<div class="start inlineEdit">'.date('m/d/y - '.$the_time_format,$resTime[0]['time_start']).'</div><div class="stop">'.date('m/d/y - '.$the_time_format,$resTime[0]['time_end']).'</div><div class="hours">'.getTimeDifference($resTime[0]['time_start'],$resTime[0]['time_end']).'</div></li>';
}
endforeach;
$return .= '<li class="grp_no"><div class="date bold">Total Time</div><div class="total">'.tot_time($unique_id,$user_id, $user_timezone).'</div></li>';
}
$return .= '</ul></div>';
endforeach;
}
return $return;
}
函数getInvoiceTimeLog($project\u unique\u id、$user\u id、$user\u timezone、$time\u format)
{
全球$db;
$query=“从任务中选择t.task\u id、t.unique\u id、t.name、t.description、t.sub\u total、p.project\u id、p.user\u id,其中t.task\u id=tp.task\u id和tp.project\u id=p.project\u id和p.unique\u id=“.db->prep($project\u unique\u id)。”和p.user\u id=“.db->prep->prep($db->prep($user\u id)。”;
$res=$db->query($query,'assoc');
如果($res!=false)
{
foreach($res作为$row1):
$date='';
$prevDate='';
$return='';
$query=“从任务中选择a.track\U id从任务中跟踪内部连接跟踪\U时间b在a.track\U id=b.track\U id中,其中a.task\U id=“.db->prep($row1['task\U id'])。”ORDER BY FROM\U UNIXTIME(b.time\U开始,%Y-%m-%d%H:%i:%s')DESC”;
$resT=$db->query($query,'assoc');
$return.='DateStartStopHours;
$return.='- '.$row1['description'].
';
如果($resT!=false)
{
foreach($resT作为$row):
$track_id=$row['track_id'];
$query=“从track\u comment中选择comment\u id,其中track\u id=”.$db->prep($track\u id);
$resComLink=$db->query($query,'assoc');
如果($resComLink!=false)
{
$query=“选择注释,注释id=”..db->prep($resComLink[0]['comment\u id'])中注释的剩余时间”;
$resComment=$db->query($query,'assoc');
$comment_class='comment_has';
}
其他的
{
$comment='';
$comment_class='comment';
}
$query=“从track\u time(track\u id=”.$db->prep($track\u id))中选择time\u start,time\u end;
$resTime=$db->query($query,'assoc');
$date=format_time($resTime[0]['time_start'],'m/d/y');
如果($date!=$prevDate)
{
$prevDate=格式时间($resTime[0]['time\u start'],'m/d/y');
$timeLog_ex='.$prevDate';
$group='grp_shw';
}
其他的
{
$timeLog_ex='';
$group='grp_no';
}
如果($time_format=='g')
{
$the_time_format='g:ia';
}
其他的
{
$the_time_format='G:i';
}
if(空($resTime[0]['time\u end']))
{
$return.='- '.$timeLog_ex.''.date('m/d/y-'.$the_-time_格式,$resTime[0]['time_-start'])。'Current'。getTimeDifference($resTime[0]['time_-start'],$db->nowUnix($user\u-timezone))。
';
}
其他的
{
$return.='- ”.$timeLog.'ex.'.date($m/d/y-).$the_-time_格式,$resTime[0]['time_-start'])。'date($m/d/y-。$the_-time_格式,$resTime[0]['time_-end'])。'getTimeDifference($resTime[0]['time-start'],$resTime-end'])
;
}
endforeach;
$return.='- 总时间.tot\u时间($unique\u id,$user\u id,$user\u时区)。'
;
}
$return.='
';
endforeach;
}
return$return;
}
我真是个笨蛋。这很简单……只需将变量声明移到foreach循环之外
将这些人移动到第一个foreach上方:
$date = '';
$prevDate = '';
$return = '';
应该考虑在块内缩进代码。它使读取返回的行数变得更加容易?您可以添加
var\u dump($resT)
在foreach($resT as$row)
行之前,查看您获得了多少条记录?也许只有一条记录,我得到了这个:array(2){[0]=>array(1){[“track_id”]=>string(2)“15”}[1]=>array(1){[“track_id”]=>string(2)“14”}array(3){[0]=>array(1){[“track_id”]=>string(2)“12”}[1]=>
因此它将返回曲目id 5记录。