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

然后我创建了从文件中读取的函数,但我很少被困在这里,因为我的书正在解释如何只读取一行,但后来我用谷歌搜索了一下,找到了一些解决方案,并制作了这个函数来从文件中读取:

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

然后我想测试它,所以我创建了两个变量:

$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 正在创建二维数组,所以输出只是“数组数组数组”。通过 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 />";

它正在做我想要的。有人能告诉我为什么我的函数是创建二维而不只是经典的一维数组吗?如果可以的话,我将不胜感激。谢谢

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

要读取文件,您有相同的:http file_get_contents(): //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 回答