简体   繁体   English

如何将两个数组合并为一个PHP

[英]how to merge two array into one php

I have two array , one is codeigniter query result array and other is created inside foreach. 我有两个数组,一个是codeigniter查询结果数组,另一个是在foreach内部创建的。 My code is, 我的代码是

$items = array();
$seats_available = 0;
$available_seats = array();

$query = 'SELECT * FROM tbl_buses';
$result = $this->db->query($query);

foreach ($result->result() as $results) {
    $query1 = 'SELECT * FROM tbl_booking WHERE buses_id = '.$results->buses_id.' AND booking_date = "'.$results->buses_date.'" AND booking_status = 1';
    $result1 = $this->db->query($query1);
    $total = $result1->num_rows();
    $seats_available = $results->buses_tot_seat - $total;
    $available_seats[] = array('available_seats' => $seats_available);

    $items[] = $results;
}

return array_merge($items, $available_seats);

now the result for the above code is, 现在以上代码的结果是

[{"buses_id":"1","buses_title":"Sugama Tourist Route No - 31","buses_dept":"20:20","buses_type":"Non A\\/C Seater\\/Sleeper (2+1)","buses_arr":"05:56","buses_fare":"760","from_place":"Ernakulam","to_place":"Mangalore","buses_date":"2019-04-25","buses_tot_seat":"30"},{"buses_id":"2","buses_title":"test buses","buses_dept":"18:20","buses_type":"test type","buses_arr":"05:56","buses_fare":"1000","from_place":"Ernakulam","to_place":"Mangalore","buses_date":"2019-04-26","buses_tot_seat":"100"},{"available_seats":30},{"available_seats":100}]

But I want the result as 但我希望结果为

[{"buses_id":"1","buses_title":"Sugama Tourist Route No - 31","buses_dept":"20:20","buses_type":"Non A\\/C Seater\\/Sleeper (2+1)","buses_arr":"05:56","buses_fare":"760","from_place":"Ernakulam","to_place":"Mangalore","buses_date":"2019-04-25","buses_tot_seat":"30","available_seats":30},{"buses_id":"2","buses_title":"test buses","buses_dept":"18:20","buses_type":"test type","buses_arr":"05:56","buses_fare":"1000","from_place":"Ernakulam","to_place":"Mangalore","buses_date":"2019-04-26","buses_tot_seat":"100","available_seats":100}]

How to acheive the above result. 如何达到上述结果。 Please help. 请帮忙。

I think a join query would be more efficient in your circumstance. 我认为联接查询在您的情况下会更有效。

$query = "SELECT buses.*, booking.buses_tot_seat as available_seats FROM tbl_buses as buses LEFT JOIN tbl_booking as booking ON booking.buses_id = buses.buses_id AND booking.booking_status = 1";

$q = $this->db->query($query);

if ($q && $q->num_rows() > 0) {
    $res = $q->result();
    echo '<pre>';
    print_r($res);
} else {
    echo 'query failed or returned no rows!'; exit;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM