2016-05-09 7 views
0

Mein Problem ist, ich weiß nicht, wie while-Schleife zu beenden, wenn alle Zeilen importiert werden. Dies ist Drupal 7.Importieren von Daten aus TXT-Datei mit While-Schleife

Wenn ich diese while Bedingung: while ($row = $regs->fetchAssoc()) setzen, bekomme ich es nie innerhalb der Schleife.

Wenn ich diese Bedingung verwenden Schleife zu brechen:

$cadena = array(); 
    while (1) { 
    $row = $regs->fetchAssoc(); 
    $cadena[] = $row; 
    if (count($cadena)<0){ 
    break;} 

ich diesen Fehler: Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 64 bytes)

Der vollständige Code ist:

$operations = array(); 
$items = array(); 
$limit = 25; 
$i = 0; 

$regs = db_query("SELECT * FROM {table_import_apunte} WHERE field_processed = :processed", array(':processed' => 0)); 

    while ($row = $regs->fetchAssoc()) { 
      if ($i < $limit) { 
       $items[] = $row; 
       $i += 1; 
      } else { 
       $operations[] = array('csvImporter_create_nodes', array($items, 'apunte')); 
       $items = array(); 
       $items[] = $row;    
       $i = 1; 
      }  
     } 

     $batch = array(
     ... 
     ); 

Antwort

0

Ihr Ansatz mit while(1) { ... } schafft eine Endlosschleife , da das Anfügen eines Elements an das Array 'cadena' dazu führt, dass die Zählung größer als 0 ist und die Zählung nicht kleiner als 0

0 sein kann

können Sie versuchen, eine foreach statt einer Weile

foreach ($regs as $row) { ... } 
zu verwenden
Verwandte Themen