将相同的键放在数组的所有元素上

时间:2012-04-03 14:18:36

标签: php codeigniter activerecord

我使用函数preg_match_all获取数组。代码原样:

 $str = $dataGroups['groups'];
 preg_match_all('/[0-9]/', $str, $matches);

它返回类型为

的关联数组
array(5) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> string(1) "4" [4]=> string(1) "5" }

如果值实际上是Link表的ID,其中我有两个外键,一个FK的值是上面数组的值,我需要的是为键分配另一个值应该是同样适用于所有元素,因为我会在表中使用它进行多次插入。所以要清楚如果我想要插入所有具有id 67的值我认为我需要这样的形式我的codeigniter活动记录:

  

array(5){[67] => string(1)“1”[67] => string(1)“2”[67] => string(1)“3”[67] => string(1)“4”[67] => string(1)“5”}

并使用AR命令:

  

$ this-> db-> insert('mytable',$ matches [0]);

我会第一次尝试,所以任何建议都值得赞赏,但最重要的是用相同的数字改变键的值,也许你可以判断这是否是正确的方法使用CodeIgniter AR进行多次插入。 感谢

Leron

2 个答案:

答案 0 :(得分:3)

您不能在数组中包含重复的键,它们必须是唯一的,因为它们用于引用!

但是,你可以做的是有一个像这样的关联数组:

$array = array(
    1 => array(
        'id' => 67
    ),
    2 => array(
        'id' => 67
    )
);

答案 1 :(得分:0)

呃,那会怎么样?你不能有多个相同的数组键;你可以做的是让一个数组存储同一个键下的所有字符串,例如

array(
    "67" => array(
        "string 1",
        "string 2",
        ...
        "string 5"
    )
);

而且我不确定这对你的数据库有什么用......这整个事情闻起来像是糟糕的数据库/表设计 - 即你显然不能使用'67'作为主键,所以你不应该基于其值添加行,而是使用唯一键(例如自动递增列)