合并和转置二维提交数据并将单个值附加到每行

问题描述 投票:0回答:4

我需要向二维数组的每一层添加一个单独的元素,该数组是通过将两个关联元素的列重组为索引行而形成的。

这是转置数组:

Array (
    [0] => Array ( 
        [actor_rt_id] => 162683283,
        [item_number] => 3
    ) 
    [1] => Array ( 
        [actor_rt_id] => 162657351,
        [item_number] => 5
    ) 
)

此代码生成数组。注释掉的行是我尝试添加到数组中的行。注释之前的代码创建数组。

$data_itemone['actor_rt_id'] = $this->input->post('actor_id');
$data_itemtwo['item_number'] = $this->input->post('item_number');
$data_item = array_merge($data_itemone, $data_itemtwo);
$res = [];
foreach ($data_item as $key => $value) {
    foreach ($value as $data => $thevalue) {
        $res[$data][$key] = $thevalue;
        //$res['film_id'] = $film_id;
    }
}

我需要从帖子中添加另一个变量,它是一个字符串。

 $film_id = $this->input->post('film_id');

我需要它像这样在数组中 -

Array (
    [0] => Array ( 
        [actor_rt_id] => 162683283,
        [item_number] => 3,
        [film_id]    => 52352
    ) 
    [1] => Array ( 
        [actor_rt_id] => 162657351,
        [item_number] => 5,
        [film_id]    => 52352
    ) 
)

...但是我的代码(未注释)产生 -

Array (
    [0] => Array ( 
        [actor_rt_id] => 162683283,
        [item_number] => 3 
    )
    [film_id] => 16639,
    [1] => Array (
        [actor_rt_id] => 162657351,
        [item_number] => 5
    )
)
php arrays codeigniter multidimensional-array submission
4个回答
2
投票

改变

$res['film_id'] = $film_id;

$res[$data]['film_id'] = $film_id;

这会将其添加到正确的数组中。


0
投票

如果你试试这个怎么样?

$data_itemone['actor_rt_id'] = [123, 245];
$data_itemtwo['item_number'] = [456, 789];
$film_id = 52352;
$data_item = array_merge($data_itemone, $data_itemtwo);
$res = [];
foreach($data_item as $key => $value){
    foreach ($value as $data => $thevalue) {
        $res[$data][$key] = $thevalue;
        $res[$data]['film_id'] = $film_id;
    }
}
print_r($res);

0
投票

试试这个

<?
    $data_itemone['actor_rt_id'] = $this->input->post('actor_id');
    $data_itemtwo['item_number'] = $this->input->post('item_number');
    $film_id = $this->input->post('film_id');
    $data_item = array_merge($data_itemone, $data_itemtwo);
    $res = [];
    foreach($data_item as $key => $value){
        foreach ($value as $data => $thevalue) {
            $res[$data][$key] = $thevalue;
            $res[$data]['film_id'] = $film_id;
        }
    }
?>

0
投票

要简洁地转置两个提交数组并附加静态声明的影片 ID,请使用

array_map()
,使用
use()
将影片 id 变量传递到回调范围,然后调用
get_defined_vars()
。 通过调用
get_defined_vars()
,将在每行中形成关联元素,这些元素由变量名称作为键控。

代码:(演示

$film_id = $this->input->post('film_id');

var_export(
    array_map(
        function($actor_rt_id, $item_number) use ($film_id) {
            return get_defined_vars();
        },
        $this->input->post('actor_id'),
        $this->input->post('item_number')
    )
);

输出:

array (
  0 => 
  array (
    'actor_rt_id' => 162683283,
    'item_number' => 3,
    'film_id' => 52352,
  ),
  1 => 
  array (
    'actor_rt_id' => 162657351,
    'item_number' => 5,
    'film_id' => 52352,
  ),
)
© www.soinside.com 2019 - 2024. All rights reserved.