[RESOLU] Imbrication d'array

Eléphanteau du PHP | 11 Messages

30 nov. 2012, 20:11

Bonjour à tous !

Je suis actuellement en train de m'essayer à la gestion de données entre php et un fichier .txt, seulement je rencontre un problème.
Ce que j'essaye de faire, c'est un système d'authentification dont les données (noms d'utilisateur et mots de passes) sont stockées dans un fichier .txt
(Oui je suis conscient qu'utiliser une base de donnée serait beaucoup plus approprié, mais je fais ça précisément pour expérimenter les actions entre le php et les fichiers).

Mon fichier .txt est présenté de cette sorte :

Code : Tout sélectionner

utilisateur1,motdepasse1 utilisateur2,motdepasse2 utilisateur3,motdepasse3 utilisateur4,motdepasse4 utilisateur5,motdepasse5
Je souhaite donc récupérer individuellement les informations de chaque utilisateur.
Après avoir ouvert ce fichier, je récupère son contenu ligne par ligne dans un tableau grâce à ce code :
while(($c = fgets($file)) == true)
{  
    $content .= $c;
}
    
$user = explode(PHP_EOL, $content);
La variable $user me retourne donc un array avec chaque ligne du fichier .txt comme ceci :

Code : Tout sélectionner

Array ( [0] => utilisateur1,motdepasse1 [1] => utilisateur2,motdepasse2 [2] => utilisateur3,motdepasse3 [3] => utilisateur4,motdepasse4 [4] => utilisateur5,motdepasse5 )
Comme je l'ai déjà dis, j'aimerais pouvoir récupérer chaque donnée individuellement. Il faudrait donc que chaque entrée du tableau (à savoir chaque ligne du fichier) soit elles-mêmes divisées en deux entrées (le nom d'utilisateur, et le mot de passe) afin que je puisse récupérer ce que je veux avec ce genre de code : $user[0]['name']. Seulement voilà, je n'ai aucune idée de comment réaliser ce genre de chose ...

Merci d'avance pour votre aide :)
Bonne soirée !

ViPHP
xTG
ViPHP | 7331 Messages

30 nov. 2012, 20:37

Petite astuce :
$content = file_get_contents('lien_vers_fichier'); // on récupère tout le contenu du fichier
$user = explode(PHP_EOL, $content); // on coupe sur le retour à la ligne
foreach($user as $key => $val){
  $tmp = explode(',', $val); // on coupe sur la virgule
  if( count($tmp) == 2 ) // on vérifie qu'on a bien coupé ce qu'on voulait - et non une ligne vide par exemple
    $user[$key] = array('name' => $tmp[0], 'mdp' => $tmp[1]); // on réécrase la valeur par le nouvel array
}
var_dump($user);
Ceci devrait te convenir. :)

Invité
Invité n'ayant pas de compte PHPfrance

01 déc. 2012, 00:49

Merci beaucoup, c'est exactement ce qu'il me fallait ! :)