fgets之后的二维数组?

时间:2013-07-22 11:47:25

标签: php arrays function fgets

我正在学习使用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.";
}

然后我创建了从文件中读取的函数,但是我很少被困在这里,因为我的书正在解释如何只阅读一行,但后来我用google搜索了一些解决方案并使这个函数用于从文件中读取:

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 />";

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

2 个答案:

答案 0 :(得分:1)

您正在将数组存储在数组键中:

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

所以,$ pole [0]应该还包含数组。

答案 1 :(得分: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功能可以帮助您解决当前的问题。