Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops &引用;return";在foreach中,只返回一组结果,而echo返回所有结果_Loops_Return - Fatal编程技术网

Loops &引用;return";在foreach中,只返回一组结果,而echo返回所有结果

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 =

我不知道为什么它会返回我用echo查找的所有值,但只有一个设置为“return”

我删除了第一个foreach语句中的所有代码,以查看foreach语句之间是否存在冲突,但返回的结果相同

我在这里尝试了一些我认为可能相关的建议,但没有任何运气

我可能做错了什么

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记录。