关于使用 Codeigniter 或其他可能的解决方案处理多维数组的建议?

Advice on handling multidimensional array with Codeigniter or possible other solution?

我有一个用户和复选框列表,我需要获取每个检查的 ID box:checked 以及主题字段和消息字段,然后传递给我的控制器。我能想到的唯一方法是获取每个 id 并复制主题和消息字段,然后将多维数组传递给我的控制器。我的数组如下所示:

[{id: "46", subject: "sample subject1", message: "test message1"}{id: "46", subject: "sample subject1", message: "test message1"}]

这似乎真的是多余的,因为我只需要用户 ID 列表和数组中消息和主题字段的 1 个副本,但不确定是否有更好的方法来执行此操作。是否可以通过 ajax 将两个不同的数组发送到我的 codeigniter 控制器?如果是这样,我如何在控制器中访问它们?

这是我收集 ID 和创建数组的代码示例。如果这是最好的方法,我仍然不确定如何在我的控制器中处理多维数组。通常我会使用 $this->input->post('key') 访问数组内容但是,那行不通:我想我需要先在控制器中循环遍历数组但不确定怎么做。

这是我的代码:

$(document).on('click', '.send_btn', function(e) { 

//get ids of selected users
var subject = 'test subject';
var message = 'test message';
var data = [];

$(':checkbox[name="people_checked[]"]:checked').each (function () {
  data.push({
    id: this.id,
    subject: subject,
    message: message
  })
  
});

  $.ajax({
      url: "/message/send_message",
      method: "POST",
      success: function (data) {
        console.log('Success');
        
     }
 }) 

});

非常感谢任何帮助建议。

如果你想 DRY up 数组,将它转换为一个在根目录中有 subjectmessage 属性的对象。然后您可以提供 ids 属性 作为数组。它看起来像这样:

$(document).on('click', '.send_btn', function(e) {
  var data = {
    subject: 'test subject',
    message: 'test message',
    ids: $(':checkbox[name="people_checked[]"]:checked').map((i, el) => el.id).get()
  };

  $.ajax({
    url: "/message/send_message",
    method: "POST",
    data: data, // note this was added, you didn't send a body in the original
    success: function(data) {
      console.log('Success');
    }
  })
});

输出将是:

{
  subject: 'test subject',
  message: 'test message',
  ids: [ 123, 987 ]
}

您显然需要修改 /message/send_message 端点以使用该格式的请求正文。