2011-11-22 60 views
0

我有一個函數,將數據庫查詢的結果寫入數組。另一個函數將這個數組寫入一個文件。PHP從文件讀取數組到陣列不帶引號

現在我想要一個函數,可以把文件的內容放回到數組中。

數組看起來像這樣(既當我從數據庫獲取它,它看起來如何在文件中):

Array 
(
[0] => Array 
    (
     [0] => 0605 
     [TIME] => 0605 
     [1] => AGP 
     [CODE] => AGP 
    ) 

[1] => Array 
    (
     [0] => 0610 
     [TIME] => 0610 
     [1] => NBE 
     [CODE] => NBE 
    ) 

[2] => Array 
    (
     [0] => 0610 
     [TIME] => 0610 
     [1] => AYT 
     [CODE] => AYT 
    ) 

[3] => Array 
    (
     [0] => 0620 
     [TIME] => 0620 
     [1] => TFS 
     [CODE] => TFS 
    ) 
) 

我已經嘗試了本 - >

public function file2Array($file){ 

    $filename = fopen($file,"r"); 
    $arr = array(); 

     while(!feof($filename)) 
     { 
    //read file line by line into a new array element 
    $arr[] = fgets($filename, 4096); 
    } 
    fclose ($filename); 
    return $arr; 
    } 

而且它的工作原理但是我的數組在每一行前都有一個(單個)引號(渲染數組無用)。

如何將文件中的數組返回到不帶引號的數組中,完全像文件中那樣?

編輯:也許我應該指出,正在讀取的文件具有.php擴展

+1

什麼是您的文件是什麼樣子? – Sjoerd

+0

難道你不想首先用文件寫入功能來搜索問題嗎? (順便說一下,還有一些其他的文件在線讀取:['file'](http://php.net/file)。) – mario

+0

我最初的反應是問你爲什麼要存儲數據類型 - 一個數組 - 在一個文件中。我認爲將數組簡單化,將數組存儲爲帶有標題的CSV文件會更容易,並且這將使得將數值提取爲真正的數據類型變得更容易。 –

回答

0

正如有人已經說過 - 使用一些數據格式。 CSV,JSON,XML - 任何事情都可以做到。

你現在正在做什麼只是將print_r或var_dump(或者你使用的任何函數)的輸出寫入文件。這些功能的輸出僅供參考,不適用於存儲數據。

這裏有一些快速功能爲您提供:

function array_to_file(array $array, $filename) 
{ 
$handle = fopen($filename, 'w'); 
foreach ($array as $a) { 
    $string = json_encode($a).PHP_EOL; 
    fwrite($handle, $string); 
    } 
    fclose($handle) 
} 

function file_to_array($filename) 
{ 
    $result = array(); 
    $array_of_lines = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 
    foreach ($array_of_lines as $line){ 
    $result[] = json_decode($line, true); 
    } 
    return $result; 
}