【问题标题】:Insert a value in between an array [duplicate]在数组之间插入一个值[重复]
【发布时间】:2013-12-06 09:05:47
【问题描述】:

我想在数组之间插入一个值。两个数组都是动态生成的。这是一个示例代码

$orig_array = Array
(
    [r0] => Array
        (
            [c0] => Array
                (
                    [field] => tab
                    [label] => First Name
                    [fieldid] => tab1
                )
        )

    [r1] => Array
        (
            [c0] => Array
                (
                    [field] => text
                    [label] => email
                )
        )

    [r2] => Array
        (
            [c0] => Array
                (
                    [field] => text
                    [label] => state
                )

        )
)

$insert_array = Array
                (
                    [field] => text
                    [label] => First Name
                    [fieldid] => fname
                    [tabid] => tab1
                )

现在我想在 r1 节点之后插入第二个数组。将第二个数组插入特定位置有 2 个条件。 1. 该字段是选项卡字段( field = tab )和 2. 第二个数组中有一个选项卡 ID,应该对应于第一个数组中的 fieldid。

【问题讨论】:

  • 好的听起来不错!你试过什么?
  • 您需要维护r[num] 键吗?
  • @PeeHaa:我在尝试 array_splice。
  • @Aarun W:是的,我必须维护它们,因为它建议行号 c 建议列号。
  • @Aditya,是否只使用数字键(而不是 r1...)?这会容易得多。

标签: php arrays


【解决方案1】:

它只管理行,但你可以对列做同样的事情:

$orig_array=array_combine(range(0,count($orig_array)-1),$orig_array);

foreach($orig_array as $key=>$row)
    if($yourCondition==TRUE)
        array_splice($orig_array, $key, 0, [["c0"=>$insert_array]]);
//you can manage your insertions here, 
//and work on a "classical" multi-dimensional array (with numeric keys)
//wich is far more easy

$final_array=[];
foreach($orig_array as $key=>$row)
        $final_array["r".$key]=$row;

编辑: 更新了代码,其中 $yourCondition 是我不太了解的条件。因为它在一个 foreach 循环中,所以您可能想要执行 if($row["c0"]["something"]==$something) ,其中某些内容是您的 id 或您的选项卡。

【讨论】:

  • 谢谢。我也在研究这种方法,但在这里我不知道要插入的数组的位置是什么。它仅取决于新数组是特定数组节点的一部分的条件。
  • @Aditya 这种情况是什么样的? $newNode='r2';?你能用这段代码更新你的问题吗?
  • @Aditya 我编辑了我的答案。
【解决方案2】:

如果你只是重写数组呢?

$final_array = array();
foreach($orig_array as $key=>$data)
{
    $final_array[$key] = $data;

    if($key == 'r1')
        $data['r1'] = $insert_array;
}

【讨论】:

  • @Raffaela:谢谢。我会试试这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 2018-05-20
  • 2020-10-17
  • 2012-12-27
  • 1970-01-01
  • 2016-09-17
相关资源
最近更新 更多