2011-07-28 4 views
1

J'ai un fichier qui contient 100 meilleurs scores pour un jeu que je suis en train de créer. Par exemple.Lire un fichier et retourner la ligne contenant

1.2345, name1 
1.3456, name2 
1.4567, name3 

par exemple.

Avec php, j'ai besoin que le contenu de la ligne nameX apparaisse pour que je puisse l'écraser si le nouveau score est supérieur à l'ancien score. Aussi j'ai besoin de savoir sur quel numéro de ligne nameX apparaît ainsi ils savent dans quel endroit (classement) ils sont dedans.

De quelles fonctions de php devrais-je regarder afin que je puisse faire que ceci fonctionne?

+3

faites-vous grand plaisir et commencez à utiliser une base de données –

Répondre

4

Vous pouvez utiliser fopen et fread ou file pour celui-ci. Personnellement, j'opterais pour le fichier car il semble que ce soit un fichier assez petit pour commencer.

$row = -1; 
$fl = file('/path/to/file'); 

if($fl) 
{ 
    foreach($fl as $i => $line) 
    { 
     // break the line in two. This can also be done through subst, but when 
     // the contents of the string are this simple, explode works just fine. 
     $pieces = explode(", ", $line); 
     if($pieces[ 1 ] == $name) 
     { 
      $row = $i; 
      break; 
     } 
    } 
    // $row is now the index of the row that the user is on. 
    // or it is -1. 
} 
else 
{ 
    // do something to handle inability to read file. 
} 

Pour faire bonne mesure, l'approche fopen:

// create the file resource (or return false) 
$fl = fopen('/path/to/file', 'r'); 
if(!$fl) echo 'error'; /* handle error */ 

$row = -1; 
// reads the file line by line. 
while($line = fread($fl)) 
{ 
    // recognize this? 
    $pieces = explode(", ", $line); 
    if($pieces[ 1 ] == $name) 
    { 
     // ftell returns the current line number. 
     $row = ftell($fl); 
     break; 
    } 
} 
// yada yada yada 
+0

Cela ne devrait-il pas être if ($ pieces [1] == $ name)? – bfavaretto

+0

@bfavaretto Oui. Fixé. – cwallenpoole

2

Voici un lien que je recommande toujours, et il n'a jamais échoué jusqu'à présent.

Files in php

De Lien:

<?php 

// set file to read 
$file = '/usr/local/stuff/that/should/be/elsewhere/recipes/omelette.txt' or die('Could not read file!'); 
// read file into array 
$data = file($file) or die('Could not read file!'); 
// loop through array and print each line 
foreach ($data as $line) { 
    echo $line; 
} 

?> 
0

Tout d'abord, vous devez lire tout le contenu du fichier sur. Modifiez la ligne que vous désirez, puis rassemblez-les dans le fichier. Cela aura cependant des prolbems de performance et de constance si vous exécutez des scripts simultanément.

Questions connexes