0

私はphpでファイルを操作することを学んでいます。最初に、ファイルに書き込むためのこの関数を作成しました。それは非常に簡単です:

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.";
}

次に、ファイルから読み取るための関数を作成しましたが、私の本は1行だけを読み取る方法を説明しているため、ここで少し立ち往生しましたが、少しグーグルして解決策を見つけ、ファイルから読み取るためのこの関数を作成しました:

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;   
}

次に、それをテストしたかったので、2 つの変数を作成します。

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

そして、この関数の呼び出し:

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

しかし問題は、その関数citanie_zo_suboruが2次元配列を作成しているため、出力が「配列配列配列配列」だけだったことです。print_r と少し試してみると、変更すると次のことがわかりました。

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

に:

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

それはまさに私が望んでいたことをしています。私の関数が従来の 1 次元配列だけでなく 2 次元を作成している理由を教えてもらえますか? できれば本当にありがたいです。ありがとう

4

2 に答える 2

1

配列キーに配列を格納しています:

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

したがって、$pole[0] にはさらに配列が含まれている必要があります。

于 2013-07-22T11:54:40.863 に答える
0

単純にファイルを作成するにはfile_put_contens(): http://php.net/manual/fr/function.file-put-contents.php

ファイルを読み取るには、同じものを持っていますfile_get_contents(): http://php.net/manual/en/function.file-get-contents.php

ファイルを読み取り、各行を配列の値として保存するにはfile(): http://www.php.net/manual/en/function.file.php

この 3 つの機能が、現在の問題の解決に役立つことを願っています。

于 2013-07-22T11:57:05.547 に答える