2015-07-09 90 views
0

我有一个数组,看起来像这样..构建SQL查询 - PHP

Array 
(
    [fm] => Array 
     (
      [133.74] => Array 
       (
        [base] => Array 
         (
          [0] => 2015-09-29 
          [1] => 2015-09-30 
         ) 

       ) 

      [202.59] => Array 
       (
        [base] => Array 
         (
          [0] => 2015-10-01 
         ) 

       ) 

     ) 

    [fmtax] => Array 
     (
      [13.51] => Array 
       (
        [0] => 2015-09-29 
        [1] => 2015-09-30 
       ) 

      [20.46] => Array 
       (
        [0] => 2015-10-01 
       ) 

     ) 

) 

,我需要建立一个SQL语句插入相关的值。我在想它需要是每个数组项的唯一查询。

所以我最终需要像

$sql = "insert into mytable ('price', 'tax', 'date') 
     values ('133.74', '13.51', '2015-09-29')"; 

我有什么到目前为止,这是...

foreach ($sale['fm'] as $key => $value) { 
    $i=0; 
    $g=count($value['base']); 
    while($i < $g) { 
     echo($sale['fm'][$key]['base'][$i]."<br />"); 
     $i++; 
    } 
} 

这为“FM”键做得很好 - 但我越来越挂断了如何从第二个关联的“fmtax”数组键中获取数值。我正在考虑使用像current/next一样的东西,因为它在迭代...但是我有点儿挠挠头。

回答

0

我假设fmfmtax都具有相同数量的元素,并且fmfmtax的相关元素(价格和税收)的顺序相同。你可以做的是 - 税收从fmtax存储与这样简单的按键:

$taxes = array(); 
$c = 0; 
foreach ($sale['fmtax'] as $key => $value) { 
    $taxes[$c] = $key; 
    $c++; 
} 

然后你就可以以这种方式从你自己的代码块访问这个新$taxes数组:

$c = 0; 
foreach ($sale['fm'] as $key => $value) { 
    //Here you have the related tax 
    $tax = $taxes[$c]; 

    $i=0; 
    $g=count($value['base']); 
    while($i < $g) { 
     echo($sale['fm'][$key]['base'][$i]."<br />"); 
     $i++; 
    } 

    $c++; 
}