我需要向二维数组的每一层添加一个单独的元素,该数组是通过将两个关联元素的列重组为索引行而形成的。
这是转置数组:
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
)
)
改变
$res['film_id'] = $film_id;
到
$res[$data]['film_id'] = $film_id;
这会将其添加到正确的数组中。
如果你试试这个怎么样?
$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);
试试这个
<?
$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;
}
}
?>
要简洁地转置两个提交数组并附加静态声明的影片 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,
),
)