2013-07-22 4 views
0

je suis d'apprendre à travailler avec des fichiers en php, j'ai d'abord fait cette fonction pour écrire dans le fichier, ESt assez simple:tableau à deux dimensions après fgets?

function zapis_do_suboru($zapisovany_subor, $obsah_suboru) 
{ 
    $pracovny_subor = fopen($zapisovany_subor,"w") or die("Chyba pri otvarani suboru"); 
    fwrite($pracovny_subor, $obsah_suboru) or die("Nejde zapisovat do suboru"); 
    fclose($pracovny_subor); 
    echo "Zapis $zapisovany_subor prebehol uspesne."; 
} 

Puis je fis fonction de lecture à partir du fichier, mais j'étais peu coincé ici, parce que mon livre est d'expliquer comment lire une seule ligne, mais je googlé peu et trouvé une solution et fait cette fonction pour la lecture du fichier:

function citanie_zo_suboru($citany_subor) 
{ 
    $pracovny_subor = fopen($citany_subor,"r") or die("Chyba pri otvarani suboru"); 
    $j = 0; 
    while(!feof($pracovny_subor)) 
     { 
     $pole[$j] = array(fgets($pracovny_subor, 4096)); 
     $j++;  
     } 

    fclose($pracovny_subor); 
    return $pole; 
} 

Je voulais ensuite le tester, donc Je crée deux variables:

$subor = "textsubor.txt"; 
$text = <<<_END 
Riadok1 blabla 
Riadok2 blabla 
Riadok3 meno suboru: $subor 
_END; 

Et cet appel de fonctions:

zapis_do_suboru($subor, $text); 
echo "<br />"; 
foreach (citanie_zo_suboru($subor) as $index =>$popis) 
    echo $popis."<br />"; 

Mais le problème est que la fonction citanie_zo_suboru crée tableau à deux dimensions, de sorte que la sortie était seulement « tableau de tableau de tableau de tableau ». Avec print_r et peu d'essayer j'ai découvert que lorsque je change:

foreach (citanie_zo_suboru($subor) as $index =>$popis) 
    echo $popis."<br />"; 

à:

foreach (citanie_zo_suboru($subor) as $index =>$popis) 
    echo $popis[0]."<br />"; 

qu'il fait exactement ce que je voulais. Quelqu'un peut-il me dire pourquoi ma fonction crée un tableau à deux dimensions et pas seulement un tableau à une dimension classique? Je serais vraiment reconnaissant si vous le pouviez. Merci

+0

me ressemble comme $ pole [$ j] = array (fgets ($ pracovny_subor, 4096)); devrait être $ pole [$ j] = fgets ($ pracovny_subor, 4096); –

+0

@JoeMinichino ou merci ça marche vraiment, maintenant je comprends ce que j'ai fait mal :) merci beaucoup –

Répondre

1

Vous stockez tableau dans la clé de tableau:

$pole[$j] = array(fgets($pracovny_subor, 4096)); 

Ainsi, pôle $ [0] devrait contenir en outre tableau.

+0

Oui, je vois et avec le commentaire de @JoeMinichino cela a fonctionné. Merci. –

+0

Bon à savoir que votre problème a été résolu :) –

0

Pour écrire simplement un fichier que vous pouvez utiliser file_put_contens(): http://php.net/manual/fr/function.file-put-contents.php

Pour lire un fichier que vous avez le même file_get_contents(): http://php.net/manual/en/function.file-get-contents.php

Pour lire un fichier et stocker chaque ligne comme valeur dans un tableau utilisez file(): J'espère que cette fonction 3 peut vous aider dans votre problème actuel.

+0

Oui, je sais à propos de ces fonctions, mais je voulais le faire avec ma fonction. Mais merci :) –