php - 关于某些模板的数组排列

标签 php mysql sql oop recursion

我有一个模板:在模板的基础上,我想要对作为模板一部分的数组进行排列,并将排列数据的每个元素插入到数据库中 实际上模板的值是动态变化的,元素的数量也变化意味着动态

  $temp = ['server', 'test[server]', 'extra'];
  $temp1 = ['server', 'test[server]'];
  $temp2 = ['server'];

test[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']

在我想插入数据库的每一个排列元素之后: 插入表(服务器、测试、额外)值(每个元素 1 个,并非全部 我有内存问题,因为它有大数组)

最佳答案

那么你需要这样的东西吗?当然,在您的查询中更改表和字段名称。您还可以根据需要访问 $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);
        }
    }
}

输出是:

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')

关于php - 关于某些模板的数组排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27504549/

相关文章:

MySQL InnoDB 表添加外键 errno :150

php - 如何正确使用Flysystem和Local Adapter

php - 使用 PHP 进行加密的新手,请指导?

mysql - 在SQL(ORACLE)中将数据从旧表复制到新表

mysql - 使用实体和 WebAPI 2 的 ASP.NET 上没有 'Access-Control-Allow-Origin' 错误

php - 使用php将sql中的数据导出到excel

sql - 如果字段长度大于 n,则自动递增计数器

php - 完成单个图像下载而不从数据库获取 如何从存储在 MySQL 数据库中的 URL 下载多个图像

PHP/MYSQL 添加带有嵌套 foreach 的列

MYSQL限速慢