【问题标题】:create associative array from multi dimensional associative post array - Codeigniter从多维关联后数组创建关联数组 - Codeigniter
【发布时间】:2015-08-05 12:27:23
【问题描述】:

我创建了一个生成多维帖子数组的表单。我想更改为数组,以便可以将其插入到我的表中。

这是返回的帖子数组。

Array
(
  [project_no] => 160
  [result] => Array
    (
        [5] => Array
            (
                [temp_dwg_rev] => D
                [temp_dwg_id] => 5
            )

        [6] => Array
            (
                [temp_dwg_rev] => D
                [temp_dwg_id] => 6
            )

        [7] => Array
            (
                [temp_dwg_rev] => E
                [temp_dwg_id] => 7
            )
    )


    [client] => Array
        (
            [1] => Array
                (
                    [client_id] => 1
                )

            [3] => Array
                (
                    [client_id] => 3
                )

        )

)

所以我认为数组应该看起来像这样才能让查询工作

Array
(
[0] => Array
    (
        [temp_dwg_id] => 5
        [temp_dwg_rev] => D
        [project_no] => 160
        [client_id] => 1
    )

[1] => Array
    (
        [temp_dwg_id] => 6
        [temp_dwg_rev] => D
        [project_no] => 160
        [client_id] => 1
    )

[2] => Array
    (
        [temp_dwg_id] => 7
        [temp_dwg_rev] => E
        [project_no] => 160
        [client_id] => 1
    )
[3] => Array
    (
        [temp_dwg_id] => 5
        [temp_dwg_rev] => D
        [project_no] => 160
        [client_id] => 3
    )

[4] => Array
    (
        [temp_dwg_id] => 6
        [temp_dwg_rev] => D
        [project_no] => 160
        [client_id] => 3
    )

[5] => Array
    (
        [temp_dwg_id] => 7
        [temp_dwg_rev] => E
        [project_no] => 160
        [client_id] => 3
    )
)

我在数据库中的表看起来像这样。注意slip_id 是自动递增的。

|slip_id |project_no |client_id |temp_dwg_id |temp_dwg_rev
|1       |160        |1         |5           |D
|2       |160        |1         |6           |D
|3       |160        |1         |7           |E
|4       |160        |3         |5           |D
|5       |160        |3         |6           |D
|6       |160        |3         |7           |E

我尝试了以下代码,但这会在关联数组中创建一个只有 temp_dwg_id、temp_dwg_rev 和 project_on 的数组。我仍然需要将客户端数组添加到此

        $drawings = $_POST['result'];
        $dist = $_POST['client'];
        $project_no = $_POST['project_no'];

        $test = array();
        foreach ($drawings as $row)
        {
            $test[$row['temp_dwg_id']]['temp_dwg_id']= $row['temp_dwg_id'];
            $test[$row['temp_dwg_id']]['temp_dwg_rev']= $row['temp_dwg_rev'];
            $test[$row['temp_dwg_id']]['project_no']= $project_no;

        }

【问题讨论】:

  • 你能分享你的尝试吗?

标签: php mysql codeigniter multidimensional-array


【解决方案1】:

试试这个:

foreach($dist as $client)
{
  foreach($drawings as $drawing)
  {
    //determine the index for your current drawings
    $index = count($test);
    $test[$index]['temp_dwg_id']= $drawing['temp_dwg_id'];
    $test[$index]['temp_dwg_rev']= $drawing['temp_dwg_rev'];
    $test[$index]['project_no']= $project_no;
    $test[$index]['client_id']= $client['client_id'];
  }
}

编辑以显示使用 array_push() 的示例

foreach($dist as $client)
{
  foreach($drawings as $drawing)
  {
    $newDrawing = array(
      'temp_dwg_id'  => $drawing['temp_dwg_id'],
      'temp_dwg_rev' => $drawing['temp_dwg_rev'],
      'project_no'   => $project_no,
      'client_id'    => $client['client_id'],
    );
    array_push($test, $newDrawing);
  }
}

【讨论】:

  • 非常感谢,效果很好。我仍在试图弄清楚它为什么有效。但是,我收到 client_id 的错误消息,上面写着 Message: Illegal string offset 'client_id'
  • 我知道它为什么会出错。我在视图页面的表单上更改了一些内容。
  • 为什么不改用array_push()
  • @Juan-EmilSaayman,它起作用的原因是您首先开始循环遍历每个客户端和 FOREACH 客户端,然后循环遍历您的示例中的图纸,每个客户端都会收到每张图纸。所以需要从客户端入手,添加每张图纸。
  • @CodeGodie,是的,您可以像使用 array_push() 一样简单,但是,我想显示索引的来源,以便他可以尝试查看新数组是如何创建的,就像他的示例一样已发布。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
  • 2014-10-03
  • 2013-08-31
  • 1970-01-01
  • 2011-06-03
相关资源
最近更新 更多