如何在for循环中爆炸逗号分隔的数组?

时间:2019-07-27 08:08:01

标签: php laravel laravel-5

我有两个逗号分隔的数组,一个用于服务ID,另一个用于服务数量,例如1,2,3,用于服务ID,这些是数量5,10,20,用于服务ID。服务ID 1具有5个数量,ID 2具有10个数量,ID 3具有20个数量。在这段代码中,我正在获取ID的服务,但我不知道如何针对这些ID在循环和保存中设置数量。希望你能回答我的问题。

我想在循环第一次工作时更改$result['service_quantity'],先是5到10,然后是20,以便我可以保存它。

$checkRecord = Booking::where('id', $saveBooking->id)->get();

$allServicesArr = explode(",", $checkRecord[0]->services_ids);
$service = array();
for ($i = 0; $i < count($allServicesArr); $i++) {

    $result = Service::find($allServicesArr[$i]);
    if ($result['id'] != '') {
        $service[$i]['id'] = $result['id'];
        $service[$i]['category_id'] = $result['category_id'];
        $service[$i]['event_id'] = $result['event_id'];
        $service[$i]['service_name'] = $result['service_name'];
        $service[$i]['service_kind'] = $result['service_kind'];
        $service[$i]['service_price'] = $result['service_price'];
        $service[$i]['service_quantity'] = $result['service_quantity'];
        $service[$i]['service_detail'] = $result['service_detail'];
    }

    $insertDate = new BookedServices();
    $insertDate->category_id = $result['category_id'];
    $insertDate->event_id = $result['event_id'];
    $insertDate->booking_id = $saveBooking->id;
    $insertDate->user_id = $userID;
    $insertDate->service_id = $result['id'];
    $insertDate->bs_name = $result['service_name'];
    $insertDate->bs_kind = $result['service_kind'];
    $insertDate->bs_price = $result['service_price'];
    $insertDate->bs_number = $result['service_number'];
    $insertDate->bs_detail = $result['service_detail'];
    $insertDate->save();
}

4 个答案:

答案 0 :(得分:1)

您可以为此简单地使用内置的array_combine功能

$id=explode(",", "1,2,3");
$qty=explode(",", "5,10,15");

print_r(array_combine($id, $qty));

结果

Array
(
    [1] => 5
    [2] => 10
    [3] => 15
)

答案 1 :(得分:0)

尝试一下

$id=explode(",","1,2,3");
$qty=explode(",","5,10,15");

foreach($id as $index => $val){
    echo "id:".$val." Qty:".$qty[$index];    // id:1 Qty:5 
}

答案 2 :(得分:0)

尝试一下。

$checkRecord = Booking::where('id', $saveBooking->id)->get();

$allServicesArr = explode(",", $checkRecord[0]->services_ids);

if(!empty($allServicesArr)){
    foreach($allServicesArr as $serviceid){
         $result = Service::find($serviceid);
         $service[$serviceid]['service_quantity'] = $result['service_quantity'];
    }
}

答案 3 :(得分:0)

$checkRecord = Booking::where('id', $saveBooking->id)->get();

$allServicesArr = explode(",", $checkRecord[0]->services_ids);
$allServicesQuantitiesArr = explode(",", $checkRecord[0]->services_quantity);

$service = array();
for ($i = 0; $i < count($allServicesArr); $i++) {

    $result = Service::find($allServicesArr[$i]);
    if ($result['id'] != '') {
        $service[$i]['id'] = $result['id'];
        $service[$i]['category_id'] = $result['category_id'];
        $service[$i]['event_id'] = $result['event_id'];
        $service[$i]['service_name'] = $result['service_name'];
        $service[$i]['service_kind'] = $result['service_kind'];
        $service[$i]['service_price'] = $result['service_price'];
        $service[$i]['service_number'] = $allServicesQuantitiesArr[$i];
        $service[$i]['service_detail'] = $result['service_detail'];
    }

    $insertDate = new BookedServices();
    $insertDate->category_id = $result['category_id'];
    $insertDate->event_id = $result['event_id'];
    $insertDate->booking_id = $saveBooking->id;
    $insertDate->user_id = $userID;
    $insertDate->service_id = $result['id'];
    $insertDate->bs_name = $result['service_name'];
    $insertDate->bs_kind = $result['service_kind'];
    $insertDate->bs_price = $result['service_price'];
    $insertDate->bs_number = $allServicesQuantitiesArr[$i];
    $insertDate->bs_detail = $result['service_detail'];
    $insertDate->save();
}