2017-09-21 2 views
0

Ich habe zweidimensionale Array. Ich versuche, es db einzufügen. Meine Datenbank istEinfügen zweidimensionalen Array in db

organisiert
ID | ORDERID | DIMENSION | QUANTITY | PACKETNAME 

Ich schaffe Array

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 
       ) 

     ) 

Sobald ich diese Ausgabe habe, muss ich es in db einzufügen, wie oben erwähnt.

Für ex nach [1] => Array, Dimension = 12500, Menge 8 und Paket Name ist 2 aber nach [1] => Array würde Paketnamen 19 für beide Dimensionen 6400 und 5558. sein würde ich Name - um 1 erhöhen. Ich weiß nicht, ob dieser Weg möglich ist, es einzufügen. Jede Hilfe willkommen

-Code aus, was ich Arrays erhalten

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()' verwandelt Ihr Array in eine Zeichenkette, die Sie speichern können. Wenn Sie diese Daten später abrufen, können Sie 'json_decode()' verwenden, um sie wieder in ein Array oder Objekt umzuwandeln. – GrumpyCrouton

+0

Ihre Ausgabe sieht nicht wie das Array aus, das Sie mit der Schleife erstellen. Es gibt eine zusätzliche Ebene der Array-Verschachtelung. – Barmar

+0

Ich verstehe das überhaupt nicht. Ich sehe nirgendwo "12580" oder "5400", meinst du "12500" und "6400"? Aber '6400' ist in' [18] ', nicht' [1] '. – Barmar

Antwort

0

Die beste Praxis ist dies mit mehreren (Beziehung) Tabellen wäre zu handhaben - in Ihrem Fall 3 (Eltern, Kind, subchild; alle: hat viele , gehört zu)

Wenn Sie nicht mit den genannten Daten arbeiten müssen (außer get), können Sie es in json konvertieren und so speichern.

Verwandte Themen