2013-07-22 54 views
0

I'm學習用PHP文件的工作,我首先用於寫入文件所做的這個功能,it'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."; 
} 

然後,我從文件中讀取發功能,但我這裏有點卡住了,因爲我的書是解釋如何讀取只有一行,但後來我一派點點找到了一些解決方案,並從文件中讀取使這個功能:

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

它做的正是我想要的。有人可以告訴我爲什麼我的函數創建了二維而不僅僅是經典的一維數組嗎?如果可以的話,我會很感激。由於

+0

在我看來像$ pole [$ j] = array(fgets($ pracovny_subor,4096));應該是$ pole [$ j] = fgets($ pracovny_subor,4096); –

+0

@JoeMinichino ou感謝它真的有效,現在我知道了我做錯了什麼:)非常感謝 –

回答

1

你存儲在陣列按鍵行列:

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

所以,$極[0]應進一步含有陣列。

+0

是的,我看到了@JoeMinichino的評論,它的工作。謝謝。 –

+0

很高興知道你的問題已經解決:) –

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個函數可以幫助你解決當前的問題。

+0

是的,我知道這些功能,但我想用我的功能。但是,謝謝:) –