Question

Je suis en train de traiter une boucle dans une boucle, et juste un peu méfiant de la syntaxe ... Est-ce que ce travail? Essentiellement, je veux exécuter du code pour 1000 enregistrements tandis que le nombre est égal ou inférieur au nombre de $ ... Est-ce que la syntaxe ci-dessous le travail, ou est-il une meilleure façon?

for($x = 0; $x <= 700000; $x++) {
  for($i = 0; $i <= 1000; $i++) {
     //run the code
  }
} 
Était-ce utile?

La solution

La syntaxe que vous avez fonctionnera, mais je ne pense pas que ça va faire exactement ce que vous voulez. En ce moment, il va faire 700,001 fois la boucle extérieure, et pour tous un seul de ces 700,001 fois, il va faire la boucle intérieure.

Cela signifie que, au total, la boucle interne va courir 700,001 x 1001 = environ 700.700.000 fois.

Si ce n'est pas ce que vous voulez, pouvez-vous donner un peu plus d'informations? Je ne peux pas vraiment travailler ce « Je veux exécuter du code pour 1000 enregistrements tandis que le nombre est égal ou inférieur au nombre de $ » signifie. Je ne vois pas du tout une variable nommée $count.

Autres conseils

  

Eh bien, pour l'essentiel, je lis dans un fichier texte et insérer chacune des lignes dans une db. J'ai essayé à l'origine while (! Feof ($ f)) [où $ f = nom de fichier], mais il garde se plaint d'une rupture de canalisation. Je pensais que ce serait une autre façon d'aller

$ f doit être fichier retourné par fopen (), pas un nom de fichier.

$file_handle = fopen($filename, 'r');

while(!feof($file_handle)) {
    $line = fgets($file_handle);

    $line = trim($line); // remove space chars at beginning and end

    if(!$line) continue; // we don't need empty lines

    mysql_query('INSERT INTO table (column) '
               .'VALUES ("'.mysql_real_escape_string($line).'")');
}

Lisez la documentation sur php.net pour fopen (), fgets (). Vous pourriez aussi avoir besoin d'exploser () si vous avez besoin de diviser votre chaîne.

Si votre fichier est pas grand, vous voudrez peut-être de le lire dans un tableau à la fois comme ceci:

$filelines = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

foreach($filelines as $line) {
   do_stuff_with($line);
}
  

Hmm. Ok ... Eh bien, pour l'essentiel, je lis dans un fichier texte et insérer chacune des lignes dans une db. J'ai essayé à l'origine while (! Feof ($ f)) [où $ f = nom de fichier], mais il garde se plaint d'une rupture de canalisation. Je pensais que ce serait une autre façon d'aller ..

Pour lire une ligne de fichier texte en ligne I habituellement:

$file = file("path to file")
foreach($file as $line){
 //insert $line into db
}

Strictement répondre à la question, vous voulez quelque chose comme ceci:

// $x would be 0, then 1000, then 2000, then 3000
for($x = 0; $x < 700000; $x += 1000) {
  // $i would be $x through $x + 999
  for($i = $x; $i < $x + 1000; $i++) {
     //run the code
  }
}

Cependant, vous devriez vraiment envisager l'une des autres méthodes pour l'importation de fichiers à une base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top