2017-09-21 128 views
0

我有兩維數組。我試圖插入它的分貝。我的數據庫被組織將二維數組插入db

ID | ORDERID | DIMENSION | QUANTITY | PACKETNAME 

創建陣列

while($r = $q->fetch()) 
    $dat[]=array($r['Length'],$r['Quantity']); 


Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [0] => 12500 
        [1] => 8 
       ) 

     ) 

    [1] => Array 
     (
      [0] => Array 
       (
        [0] => 12500 
        [1] => 8 
       ) 

     ) 

    [2] => Array 
     (
      [0] => Array 
       (
        [0] => 12500 
        [1] => 8 
       ) 

     ) 


    [18] => Array 
     (
      [0] => Array 
       (
        [0] => 6400 
        [1] => 6 
       ) 

      [1] => Array 
       (
        [0] => 5558 
        [1] => 2 
       ) 

     ) 

一旦我得到這個輸出,我需要將其插入到數據庫,上面提到的。

For ex for [1] => Array,dimension = 12500,quantity 8 and packet name is 2 but for [1] => Array,對於6400和5558兩個維度,數據包名稱都是19。名稱 - 增加1.我不知道這種方式是否可以插入它。任何幫助表示讚賞

代碼從我得到陣列

while($r = $q->fetch()) $dat[]=array($r['Duzina'] ,$r['Kolicina']); 

// package size: 
$n=10; 

$cnt=0;      // initialize package counter 
$pack=array();     // set up first package 
$d=array_shift($dat);   // get first lot $d from $dat 

do {  
    if ($d[1]>0){  
    $take=min($d[1],$n-$cnt); // decide how much to take out ... 
    $cnt+=$take;    // increase package counter 
    $d[1]-=$take;$pack[]=array($d[0],$take); // tranfer the goods ... 
           // if package is full, start next one 
    if ($cnt==$n) {$packs[]=$pack; $pack=array(); $cnt=0;} 
    } else if(count($dat)>0){ // still elements in $dat left? 
    $d=array_shift($dat);  // get the next lot $d from $dat 
    } else break;  
} while(true); 
if ($cnt>0) $packs[]=$pack; // collect the last "stranded" package ... 

echo "<pre>"; 
//echo str_replace("]],","]],\n ",json_encode($packs)); // as JSON string 
print_r($packs);   // conventional (bulky) PHP object notation 
echo "</pre>"; 
+0

'json_encode()'將您的數組轉換爲可存儲的字符串。當你稍後拉取這些數據時,你可以使用'json_decode()'把它變回數組或對象。 – GrumpyCrouton

+0

您的輸出看起來不像您使用循環創建的相同陣列。有一個額外的數組嵌套層次。 – Barmar

+0

我完全不明白這一點。我沒有在任何地方看到'12580'或'5400',你的意思是'12500'和'6400'?但'6400'在'[18]'中,而不是'[1]'。 – Barmar

回答

0

來處理,這將是與多個最佳實踐(關係)表 - 在你的案件3(父母,子女,subchild;全:有很多,屬於)

如果你不需要使用上述數據(除get以外),你可以將它轉換爲json並保存。