将数组拆分为用于数据库插入的唯一数组

时间:2015-02-04 17:42:55

标签: php mysql arrays

我有一个这样的数组:

Array
(
    [year] => 1994, 1995, 1996, 1997
    [make] => Ford
    [model] => Mustang, Mustang Cobra, Mustang GT
    [engine] => 302, 302 H/O, V6
)

我想在数据库中插入所有可能的解决方案,将唯一的行插入到我的数据库中。

例如:

id    year      make      model            engine
1     1994      Ford      Mustang          302
2     1994      Ford      Mustang Cobra    302
3     1994      Ford      Mustang GT       302
4     1994      Ford      Mustang          302 H/O
...and so on

我需要能够分解该数组以将所有可能的解决方案放入一个唯一的行中。某些列可能没有值。例如,数组可能只包含几个Make。我想将所有独特的可能性插入到数组中。

Array
(
    [0] => 1994, Ford, Mustang, 302
    [1] => and so on...
)

2 个答案:

答案 0 :(得分:1)

这是一种简单的方法,没有数据库部分,但我希望你能自己做到这一点:

$arr = array
(
    'year' => '1994, 1995, 1996, 1997',
    'make' => 'Ford',
    'model' =>'Mustang, Mustang Cobra, Mustang GT',
    'engine' => '302, 302 H/O, V6'
);

$years = explode(',',$arr['year']);
$makes = explode(',',$arr['make']);
$models = explode(',',$arr['model']);
$engines = explode(',',$arr['engine']);

foreach($years as $year) {
    foreach($makes as $make) {
        foreach($models as $model) {
            foreach($engines as $engine) {
               echo 'INSERT INTO yourtable '.$year.', '.$make.', '.$model.', '.$engine."\n";
            }

        }

    }
}

答案 1 :(得分:0)

如果您需要“所有独特的可能性”(组合),最直接的方法是迭代您的信息数组,将每个项目嵌套在另一个项目中。对于从迭代创建的每个组合,使用收集的信息创建一个数组并添加到最终数组。例如:以伪代码的形式

finalArray = new array()    
foreach(year as y) 
     foreach(make as m) 
          foreach(model as mo) 
               foreach(engine as e)
                    newArray = new array(y,m,mo,e)
                    add newArray to finalArray

希望它能帮助你