繁体   English   中英

更改array_chunk php上的密钥

[英]Change key on array_chunk php

我有这样的基于数组的POST:

Array
(
[condition] => Array
    (
        [0] => 1
    )

[container] => 
[cleaning] => Y
[owner] => Eagletainer
[last_cargo] => 1
[vessel] => 
[insulation] => 1
[tare] => 
[gross] => 
[capacity] => 
[unit_type] => IMO 1
[date_of_manu] => 
[name_manu] => 
[last25] => 
[cert25] => 
[last5] => 
[cert5] => 
[list2_item_0] => 1
[list2_kondisi_0] => 9
[list3_item_0] => 15
[list3_kondisi_0] => 3
[comments] => 
)

我的情况是,我想将很多这些元素数组分块到数据库中的insert_batch另一个数组中。 这是将这些数组分块的php代码:

public function get_partition($array, $p, $c) {
    $partition = array_slice($array, $p);
    array_pop($partition);
    return $chunk = array_chunk($partition, $c);
}

现在,使用它,

$detail = $this->get_partition($this->input->post(), 17, 2);

结果是:

Array
(
[0] => Array
    (
        [0] => 1
        [1] => 9
    )

[1] => Array
    (
        [0] => 15
        [1] => 3
    )

)

我的问题是,如何将键[0]和[1]更改为另一个键,例如[ID]和[CODE_DAMAGE]

我希望它们看起来像这样:

Array
(
[0] => Array
    (
        [ID] => 1
        [CODE_DAMAGE] => 9
    )

[1] => Array
    (
        [ID] => 15
        [CODE_DAMAGE] => 3
    )

 )

重新循环数组,以达到所需的结果,如下所示:

$detail = $this->get_partition($this->input->post(), 17, 2);
$new_array = array();
$count = 0;
foreach($detail as $row){
   $new_array[$count]['ID'] = $row[0];
   $new_array[$count++]['CODE_DAMAGE'] = $row[1];
}

如果索引已经正确,则可以传递可选的第三个参数: http : //php.net/array_chunk

<?php
$array = array(0 => array(0 => 123, 1 => 1234), 1 => array(0 => 123, 1 => 1234));
$updatedArray = array();
foreach ($array as $k => $v) {
    $updatedArray[$k]['ID'] = $v[0];
    $updatedArray[$k]['CODE_DAMAGE'] = $v[1];
}
?>

试试这个,希望对您有所帮助。

尝试这个:

foreach($detail as $key => $value){
    if($key == 0){
        $detail['ID'] = $value;
        unset($detail[$key]);
    }
    if($key == 1){
        $detail['CODE_DAMAGE'] = $value;
        unset($detail[$key]);
    }
}

只是一个示例,将数组添加到此代码中..它将很好地工作

$main = Array(Array(1,9),Array(15,3));
$b = array('ID', 'CODE_DAMAGE');
$new_array = array();
foreach($main as $subarray)
{
    $new_array[] = array_combine($b, $subarray);        
}
echo'<pre>';print_r($new_array);

暂无
暂无

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

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