【问题标题】:How to assign array value into variable inside foreach loop in codeigniter如何将数组值分配给codeigniter中foreach循环内的变量
【发布时间】:2020-06-02 07:21:53
【问题描述】:

我有一组具有不同 userId 的用户,我正在尝试使用 foreach 循环来循环这些数组。在该循环中,我正在调用一个函数,通过将每个用户的用户 ID 传递给一个函数来获取每个用户的值。但它只传递了一个数组索引。

我的代码

public function getDailyReportTest($orgId, $date)
{
    $query = $this->db->query("SELECT *  FROM `organization_users` WHERE orgId='7'");

       $timestamp = strtotime($date);
       $day = date('l', $timestamp);


   $data = array();
$i = 0;
foreach ($query->result_array() as $row) {

  $data[$i]['date']    = $date;
  $data[$i]['day']     = $day;
  $data[$i]['user_id'] = $row['orgUserId'];
  $data[$i]['user_name'] = $row['orgUserName'];


  $data[$i]['workingHours'] = self::getUserWorkingHours($data[$i]['user_id'],$date);

  $delayTime=self::getUserDelayTime($row['orgUserId'],$date);
  $shortTime=self::getUserShortTime($row['orgUserId'],$date);
  $overTime=self::getUserOverTime($row['orgUserId'],$date);

     $data[$i]['delayTime']   =$delayTime;
     $data[$i]['shortTime']   =$shortTime;
     $data[$i]['overTime']    =$overTime;

   $data[$i]['shift1_start'] = self::getUserShiftStartTime($row['orgUserId'], $date);  


  $i=$i+1;
}
//return $data;
print_r($data);
die();

}

public function getUserShiftStartTime($userId, $date)
{
    $query = $this->db->query("SELECT * FROM `office_employee_assigned_shifts` WHERE employeeId='$userId' &&shiftdate='$date'");
    $entry = $query->num_rows();

    $data = $query->result_array();

    if($entry==0)
    {
        return NULL;
    }
    else
    {
        $shiftId = $data[0]['shiftId'];
        $shiftquery = $this->db->query("SELECT startTimeSpan, endTimeSpan FROM `office_shift_time` WHERE officeShiftId='$shiftId'");
        $dataShift = $shiftquery->result_array();
        $startSpan = $dataShift[0]['startTimeSpan'];
        $endSpan = $dataShift[0]['endTimeSpan'];


        $firstPunchQuery = $this->db->query("SELECT punchTime AS firstPunch FROM `employee_punch_log` WHERE punchDate='$date' && employeeId='140' && punchTime BETWEEN '$startSpan' AND '$endSpan' AND punchType='1' LIMIT 1");
        $punchEntryCount  = $firstPunchQuery->num_rows();
         if($punchEntryCount>0)
         {
        $dataFirstPunch = $firstPunchQuery->result_array();
        $firstPunchStartTime = $dataFirstPunch[0]['firstPunch'];
        return $firstPunchStartTime;
         }
         else
         {
             return "AB";
         }


    }
   // return $entry;
}

它只传递 $data[1]['user_id']。

我想将 $data[0]['user_id'], $data[1]['user_id'], $data[2]['user_id'] 传递给函数 命名为 getUserShiftStartTime($userId, $date)

有什么帮助吗? 提前感谢您的帮助

【问题讨论】:

  • 您的代码中没有调用函数 getUserShiftStartTime()。当你打印 $data 时,这个数组有多少条记录?
  • @TufailAhmad 想念它:已更新
  • 打印 $data 时数组中是否只有一条记录?
  • 这段代码看起来太复杂了。代码应该对所解决的问题具有最低的复杂性,并且在这种情况下无法验证。

标签: php arrays codeigniter


【解决方案1】:

然后将当前变量传递给你的方法:

self::getUserShiftStartTime($data[$i]['user_id'], $date); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多