Php 如何使用键在数组中追加值而不被覆盖

Php 如何使用键在数组中追加值而不被覆盖,php,arrays,Php,Arrays,我在foreach循环中得到结果,现在我想用键形成一个新数组,用新数据形成该数组。现在,当我尝试分配数据时,它会被覆盖到上一个,因为它不会得到新的索引。到目前为止,我是如何做到这一点的: foreach ($result as $key) { $pickup_location = $key->locationid; if (isset($pickup_location)) { $pickup_location = $this->db->get_w

我在foreach循环中得到结果,现在我想用键形成一个新数组,用新数据形成该数组。现在,当我尝试分配数据时,它会被覆盖到上一个,因为它不会得到新的索引。到目前为止,我是如何做到这一点的:

foreach ($result as $key) {
    $pickup_location = $key->locationid;
    if (isset($pickup_location)) {
        $pickup_location = $this->db->get_where('locations', array('id' => $pickup_location ))->row();
        if (!empty($pickup_location)) {
            $supplier_dashboard['pickup_location_name'] = $pickup_location->name_en;
        }
    } 

    $dropoff_location = $key->location_dropoff;
    if (isset($dropoff_location)) {
        $dropoff_location = $this->db->get_where('locations', array('id' => $dropoff_location ))->row();
        if (!empty($dropoff_location)) { 
            $supplier_dashboard['dropoff_location_name'] = $dropoff_location->name_en;
        }
    }
    $car_make = $key->car_id;

    if (isset($car_make)) {
        $car_details = $this->db->get_where('chauffeur_rates', array('chauffeur_id' => $car_make))->row();
        if (!empty($car_details)) {
            $supplier_dashboard['car_make'] = $car_details->chauffeur_make;
        }
    }
}
return $supplier_dashboard;
}
我得到的数组是:

Array
(
 [pickup_location_name] => Seoul Downtown
 [dropoff_location_name] => Disneyland Paris
 [car_make] => makecar
)
然而,我至少有7个位置名称和汽车品牌,而不是作为一个新的数组添加它覆盖了前一个,我应该得到的结果如下

Array
[0](
 [pickup_location_name] => Seoul Downtown
 [dropoff_location_name] => Disneyland Paris
 [car_make] => makecar
)
Array
[1](
 [pickup_location_name] => Seoul 1
 [dropoff_location_name] => Disneyland 1
 [car_make] => makecar
)
Array
[2](
 [pickup_location_name] => Seoul 2
 [dropoff_location_name] => Disneyland 2
 [car_make] => makecar
)
... upto 7

您必须将$key添加到添加记录的数组中

使用

而不是

$supplier_dashboard['pickup_location_name'] = //your code

您必须将$key添加到添加记录的数组中

使用

而不是

$supplier_dashboard['pickup_location_name'] = //your code

您直接在最顶端的集合中设置值,而不是将项添加到数组中

安装

$myobject['foo'] = $value;
您需要执行(其中,
$iteration
是循环中的当前位置)

请尝试以下操作:

$carItemNumber = 0;
foreach ($result as $key) {
    $pickup_location = $key->locationid;
    if (isset($pickup_location)) {
        $pickup_location = $this->db->get_where('locations', array('id' => $pickup_location ))->row();

        if (!empty($pickup_location)) {
         $supplier_dashboard[$carItemNumber]['pickup_location_name'] = $pickup_location->name_en;
        }
    } 

    $dropoff_location = $key->location_dropoff;
    if (isset($dropoff_location)) {
        $dropoff_location = $this->db->get_where('locations', array('id' => $dropoff_location ))->row();

        if (!empty($dropoff_location)) { 
         $supplier_dashboard[$carItemNumber]['dropoff_location_name'] = $dropoff_location->name_en;
        }
    }

    $car_make = $key->car_id;

    if (isset($car_make)) {
        $car_details = $this->db->get_where('chauffeur_rates', array('chauffeur_id' => $car_make))->row();

        if (!empty($car_details)) {
         $supplier_dashboard[$carItemNumber]['car_make'] = $car_details->chauffeur_make;
        }
    }

    $carItemNumber++;
}
return $supplier_dashboard;

您直接在最顶端的集合中设置值,而不是将项添加到数组中

安装

$myobject['foo'] = $value;
您需要执行(其中,
$iteration
是循环中的当前位置)

请尝试以下操作:

$carItemNumber = 0;
foreach ($result as $key) {
    $pickup_location = $key->locationid;
    if (isset($pickup_location)) {
        $pickup_location = $this->db->get_where('locations', array('id' => $pickup_location ))->row();

        if (!empty($pickup_location)) {
         $supplier_dashboard[$carItemNumber]['pickup_location_name'] = $pickup_location->name_en;
        }
    } 

    $dropoff_location = $key->location_dropoff;
    if (isset($dropoff_location)) {
        $dropoff_location = $this->db->get_where('locations', array('id' => $dropoff_location ))->row();

        if (!empty($dropoff_location)) { 
         $supplier_dashboard[$carItemNumber]['dropoff_location_name'] = $dropoff_location->name_en;
        }
    }

    $car_make = $key->car_id;

    if (isset($car_make)) {
        $car_details = $this->db->get_where('chauffeur_rates', array('chauffeur_id' => $car_make))->row();

        if (!empty($car_details)) {
         $supplier_dashboard[$carItemNumber]['car_make'] = $car_details->chauffeur_make;
        }
    }

    $carItemNumber++;
}
return $supplier_dashboard;

每次循环数组的键总是相同的,这就是为什么要忽略结果。你需要放一把独一无二的钥匙。你可以试试这个

$i = 0; //First key
foreach ($result as $key){
    $supplier_dashboard[$i]['pickup_location_name'] = $pickup_location->name_en;
    $i++; //add +1 to the key so the next element not overrides
}

每次循环数组的键总是相同的,这就是为什么要忽略结果。你需要放一把独一无二的钥匙。你可以试试这个

$i = 0; //First key
foreach ($result as $key){
    $supplier_dashboard[$i]['pickup_location_name'] = $pickup_location->name_en;
    $i++; //add +1 to the key so the next element not overrides
}

已经这样做了,它的
严重性:警告消息:非法偏移类型
您的foreach语句需要更改为foreach($result as$key=>$value){}在代码中使用foreach($result as$key1=>$key){}在数组中使用$supplier\u dashboard[$key1]['picku location\u name']=//您的代码已经这样做了,其
严重性:警告消息:非法偏移量类型
您的foreach语句需要更改为foreach($result as$key=>$value){}在代码中使用foreach($result as$key1=>$key){}并在数组中使用$supplier_dashboard[$key1]['picku location\u name']=//您的代码