在PHP中为循环生成单个外部数组

在PHP中为循环生成单个外部数组,php,mysql,Php,Mysql,我想根据“用户出租车总数”得到每辆出租车的“有效时间”, 我有以下两张桌子 这是我的第一个表名“taxiInfo” 这是我的第二张表格“预订”(显示是否通过“出租车号码/序列号”预订出租车) 我尝试了以下代码 $this->db->select('*'); $this->db->from('taxiInfo'); $this->db->where('userId', $_POST['userId']); $query = $this->db->ge

我想根据“用户出租车总数”得到每辆出租车的“有效时间”, 我有以下两张桌子

这是我的第一个表名“taxiInfo”

这是我的第二张表格“预订”(显示是否通过“出租车号码/序列号”预订出租车)

我尝试了以下代码

$this->db->select('*');
$this->db->from('taxiInfo');
$this->db->where('userId', $_POST['userId']);
$query = $this->db->get();
if ( $query->num_rows() > 0 )
    {
            $rows = $query->row_array();
             $shopchairs=$rows['totalTaxi'];
    } 
//first of all getting total taxi from db then make dynamic query   
$total=array();  //blank array  
for($i=1;$i<=$shopchairs;$i++)
                {
                    $date = date('Y-m-d');
                    $this->db->select('b.*');
                    $this->db->from('booking b');
                    $this->db->where('userId', $_POST['user_id']);
                    $this->db->where('taxiNumber', $i);
                    $this->db->where('servicedate', $date);
                    $querys = $this->db->get();
                    $res = $querys->result_array();
                    //echo "<pre>";print_R($res);
                    //exit;
                    if (empty($res)) {
                         $total['taxiNumber']=$i;
                         $total['status']="available";
                    }else
                    {
                        $total['taxiNumber']=$res['0']['taxiNumber'];
                        $total['status']="booked";
                    }   
                }
        echo "<pre>";print_R($total);
$this->db->select('*');
$this->db->from('taxiInfo');
$this->db->where('userId',$\u POST['userId']);
$query=$this->db->get();
如果($query->num\u rows()>0)
{
$rows=$query->row_数组();
$shopchairs=$rows['totalTaxi'];
} 
//首先从数据库中获取总计程,然后进行动态查询
$total=array()//空白数组
对于($i=1;$idb->选择($b.*);
$this->db->from('booking b');
$this->db->where('userId',$\u POST['user\u id']);
$this->db->where('taxiNumber',$i);
$this->db->where('servicedate',$date);
$querys=$this->db->get();
$res=$querys->result_array();
//回音“;打印($res);
//退出;
如果(空($res)){
$total['taxiNumber']=$i;
$total['status']=“可用”;
}否则
{
$total['taxiNumber']=$res['0']['taxiNumber'];
$total['status']=“已预订”;
}   
}
回音“;打印(总计);

所有结果不在单个数组中($total);我错在哪里?

如果查询有效,请尝试
$total[]=array('taxiNumber'=>$i,'status'=>'available');
(其他部分相同)。现在,每个循环都会覆盖数组中的前一个循环@Mickël Leger:请解释您的观点或在我的代码中进行更改您现在得到的是什么输出以及您想要的是什么输出?现在,您有一个$total数组,并且在您的foreach中,您执行的每个循环都是$total['taxiNumber']=X和$total['status']=Y…所以在foreach结束时,您将只有一个$total数组,其中包含最后一个循环的最后一个结果。这是您的问题吗?如果不是,很抱歉,但我不理解您的问题
id      userId          taxiNumber      servicedate             
1       2               2               201910-29
$this->db->select('*');
$this->db->from('taxiInfo');
$this->db->where('userId', $_POST['userId']);
$query = $this->db->get();
if ( $query->num_rows() > 0 )
    {
            $rows = $query->row_array();
             $shopchairs=$rows['totalTaxi'];
    } 
//first of all getting total taxi from db then make dynamic query   
$total=array();  //blank array  
for($i=1;$i<=$shopchairs;$i++)
                {
                    $date = date('Y-m-d');
                    $this->db->select('b.*');
                    $this->db->from('booking b');
                    $this->db->where('userId', $_POST['user_id']);
                    $this->db->where('taxiNumber', $i);
                    $this->db->where('servicedate', $date);
                    $querys = $this->db->get();
                    $res = $querys->result_array();
                    //echo "<pre>";print_R($res);
                    //exit;
                    if (empty($res)) {
                         $total['taxiNumber']=$i;
                         $total['status']="available";
                    }else
                    {
                        $total['taxiNumber']=$res['0']['taxiNumber'];
                        $total['status']="booked";
                    }   
                }
        echo "<pre>";print_R($total);