在此,用户可以在运行时添加最多10对文本字段;我在这里使用jQuery。
foreach
这里我收到了用户输入的所有信息。因为每次输入字段的数量发生变化时,我都尝试使用for
循环来一次输入一组数据。
我正在使用CodeIgniter将数据插入数据库。我不想在我的模型中使用$data
循环 - 这就是为什么我需要$data = array(
array(
'mytext1' => 'xx',
'mytext2' => 'xxx'),
),
array(
'mytext1' => 'xx',
'mytext2' => 'xxx'),
)
);
成为类似于此的数组
insert_batch
这样我就可以使用array_merge()
。
但<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller
{
public function index()
{
$this->load->view('welcome_message');
}
public function formdata()
{
$data = array();
foreach($_POST as $post) {
$data2['mytext'] = $post[0];
$data2['mytext2'] = $post[1];
$data = array_merge($data2, $data);
}
print_r($data);
exit;
}
}
在循环结束后只给我第一个数据。
Map
它没有合并所有项目,它只是给我输入我在表单中输入的第一个输入。
我该如何解决这个问题?
答案 0 :(得分:0)
您可以改为使用array_map()
:
public function formdata()
{
$data = array_map(function ($myText, $myText2) {
return [
'mytext' => $myText,
'mytext2' => $myText2,
];
}, $_POST['mytext'], $_POST['mytext2']);
print_r($data);
exit;
}
注意这假定
$_POST['mytext']
是一个数组$_POST['mytext2']
是一个数组$_POST['mytext']
中的元素与$_POST['mytext2']
中的元素数量相同。 供参考,见:
有关示例,请参阅: