Php 关于某些模板的数组置换

Php 关于某些模板的数组置换,php,mysql,sql,oop,recursion,Php,Mysql,Sql,Oop,Recursion,我有一个模板:在模板的基础上,我希望数组的排列是模板的一部分,并将排列数据的每个元素插入数据库 实际上,模板的值是动态变化的,元素的数量也是动态变化的 $temp = ['server', 'test[server]', 'extra']; $temp1 = ['server', 'test[server]']; $temp2 = ['server']; 测试[服务器]:测试取决于服务器; 数据属于模板: $server = ['server1','server2','serv

我有一个模板:在模板的基础上,我希望数组的排列是模板的一部分,并将排列数据的每个元素插入数据库 实际上,模板的值是动态变化的,元素的数量也是动态变化的

  $temp = ['server', 'test[server]', 'extra'];
  $temp1 = ['server', 'test[server]'];
  $temp2 = ['server'];
测试[服务器]:测试取决于服务器; 数据属于模板:

  $server = ['server1','server2','server3'];
  $test = ['server1'=>['test1', 'test2'], 
           'server2' => ['test4', 'test5'], 
            'server3' => ['test7']];
   $extra = ['a','b','c'];
我想要像这样的排列:

模板$temp

     ['server'=>'server1', 'test' => 'test1','extra'=>'a']
     ['server'=>'server1', 'test' => 'test1','extra'=>'b']
     ['server'=>'server1', 'test' => 'test1','extra'=>'c']
     ['server'=>'server1', 'test' => 'test1','extra'=>'a']
     ['server'=>'server1', 'test' => 'test2','extra'=>'a']
     ['server'=>'server1', 'test' => 'test2','extra'=>'b']
     ['server'=>'server1', 'test' => 'test2','extra'=>'c']
     ['server'=>'server2', 'test' => 'test4','extra'=>'a']
     ['server'=>'server2', 'test' => 'test4','extra'=>'b']
     ['server'=>'server2', 'test' => 'test4','extra'=>'c']
     ['server'=>'server2', 'test' => 'test5','extra'=>'a']
     ['server'=>'server2', 'test' => 'test5','extra'=>'b']
     ['server'=>'server2', 'test' => 'test5','extra'=>'c']
     ['server'=>'server3', 'test' => 'test7','extra'=>'a']
     ['server'=>'server3', 'test' => 'test7','extra'=>'b']
     ['server'=>'server3', 'test' => 'test7','extra'=>'c']
对于模板$temp1:

     ['server'=>'server1', 'test' => 'test1']
     ['server'=>'server1', 'test' => 'test2']
     ['server'=>'server2', 'test' => 'test4']
     ['server'=>'server2', 'test' => 'test5']
     ['server'=>'server3', 'test' => 'test7']
对于模板$temp2:

     ['server'=>'server1']
     ['server'=>'server2']
     ['server'=>'server3']
在我要在数据库中插入的每个置换元素之后: 插入到表服务器、测试、extravalues1元素中,每个元素不是全部
我有内存问题,因为它有大数组

所以你需要这样的东西吗?当然,在查询中更改表名和字段名。您还可以根据需要访问$newArray数组

$test = array('server1' => array('test1', 'test2'),
    'server2' => array('test4', 'test5'),
    'server3' => array('test7')
);
$extras = array('a', 'b', 'c');

$newArray = array();
foreach ($test as $server => $testArray) {
    foreach ($testArray as $test) {
        foreach ($extras as $extra) {
            $sql = "INSERT INTO tbl (server, test, extra)"
                . " VALUES ('".$server."', '".$test."', '".$extra."')";
            echo $sql."<br />";
            $db->query($sql);
            $newArray[] = array("server" => $server, 'test' => $test, 'extra' => $extra);
        }
    }
}

这不是正确的答案,因为我提到模板的长度不是固定的,它的元素是可变的,是吗?我正在使用foreach,因此您可以添加/删除元素。。。如果您更改了数组,例如,将一个d添加到您的附加项中,请查看那里发生了什么。数组将更大。模板可能会更改为示例$trmp=['a'、'b'、'c[a]'],以及服务器和测试[server]的方式相互关联?名称在变化,数据也随着名称而变化,因此不是每个元素的固定名称/值/长度。如果模板的名称值和相应的数组值发生变化,我们可以如何处理-可能是使用递归,但如何处理
INSERT INTO tbl (server, test, extra) VALUES ('server1', 'test1', 'a')
INSERT INTO tbl (server, test, extra) VALUES ('server1', 'test1', 'b')
INSERT INTO tbl (server, test, extra) VALUES ('server1', 'test1', 'c')
INSERT INTO tbl (server, test, extra) VALUES ('server1', 'test2', 'a')
INSERT INTO tbl (server, test, extra) VALUES ('server1', 'test2', 'b')
INSERT INTO tbl (server, test, extra) VALUES ('server1', 'test2', 'c')
INSERT INTO tbl (server, test, extra) VALUES ('server2', 'test4', 'a')
INSERT INTO tbl (server, test, extra) VALUES ('server2', 'test4', 'b')
INSERT INTO tbl (server, test, extra) VALUES ('server2', 'test4', 'c')
INSERT INTO tbl (server, test, extra) VALUES ('server2', 'test5', 'a')
INSERT INTO tbl (server, test, extra) VALUES ('server2', 'test5', 'b')
INSERT INTO tbl (server, test, extra) VALUES ('server2', 'test5', 'c')
INSERT INTO tbl (server, test, extra) VALUES ('server3', 'test7', 'a')
INSERT INTO tbl (server, test, extra) VALUES ('server3', 'test7', 'b')
INSERT INTO tbl (server, test, extra) VALUES ('server3', 'test7', 'c')