当用户可以动态添加文本字段集时,如何处理输入?

时间:2017-09-04 15:01:45

标签: php html arrays codeigniter post

HTML

在此,用户可以在运行时添加最多10对文本字段;我在这里使用jQuery。

foreach

PHP

这里我收到了用户输入的所有信息。因为每次输入字段的数量发生变化时,我都尝试使用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

它没有合并所有项目,它只是给我输入我在表单中输入的第一个输入。

我该如何解决这个问题?

1 个答案:

答案 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']中的元素数量相同。

供参考,见:

有关示例,请参阅: