2010-09-30 80 views
1

我有以下代碼,它使用數組將結果寫入文件。 我想創建另一個數組從另一個文件讀取名人數組。從文件加載數組變量

<?php 
require("class.XMLHttpRequest.php"); 
function hot($news){ 
$url="https://localhost/search.aspx?search=".$news.""; 
$ajax=new XMLHttpRequest(); 
$ajax->setRequestHeader("Cookie","Cookie: host"); 
$ajax->open("GET",$url,true); 
$ajax->send(null); 
if($ajax->status==200){ 
    $rHeader=$ajax->getResponseHeader("Set-Cookie"); 
    if(substr_count($rHeader, "Present!")>0) { return true; } 
}else{ return false; } 
} 
$celebrities = array('britney','gaga','carol'); 
$filename = 'result.txt'; 
$handle = fopen($filename, 'a'); 
foreach($celebrities as $celebrity) 
{ 
    if(hot($celebrity)) { fwrite($handle, "{$celebrity}\r\n"); }; 
} 
fclose($handle); 
?> 

我也想給$celebrities陣列從文件加載的

$celebrities = array('britney','gaga','carol'); 

我不能得到這個工作吧。我究竟做錯了什麼?

<?php 
$handle = @fopen('array.txt', "r"); 
if ($handle) { 
    while (!feof($handle)) { 
     $celebrities[] = fgets($handle, 4096); 
    } 
    fclose($handle); 
} 
?> 
+4

我很想看到'hot'功能。 – Kevin 2010-09-30 14:42:53

+0

請不要吼我們。 – GZipp 2010-09-30 14:48:12

回答

1

我沒有看到您的代碼有任何問題。什麼不工作?任何錯誤消息?

爲什麼你把文件讀入一個數組?我的建議:

$read_file = fopen('array.txt', 'r'); 
$write_file = fopen('result.txt', 'a'); 

while(!feof($read_file)) 
{ 
    $celebrity = trim(fgets($read_file)); 
    if(hot($celebrity)) { fwrite($write_file, "{$celebrity}\r\n"); } 
} 

fclose($write_file); 
fclose($read_file); 
+0

您IDEEA是很大的,這其實是我想做的事情,負載從一個文件,然後寫入到另一個,例如你給doent任何錯誤,但我的Result.txt是空 – adam 2010-09-30 14:53:46

+0

它時所使用的陣列做了工作? – Mischa 2010-09-30 14:57:34

+0

作品,但讓我客串這Ÿ沒有數據被寫入 – adam 2010-09-30 14:59:24

0

既然你分開用換行/回車每個數組項,你應該通過行的文件行的內容讀出,並且每個分配給你的陣列,它看起來像你這樣做。也許在使用之前聲明數組將有所幫助,例如$celebrities = array();之前您的循環。否則,每當你的循環迭代時,它看起來像$名人被重新定義。

如果你提供什麼不工作(解析錯誤?數組的內容?)的詳細信息,然後我可以提供更詳細的解答。

如果代碼不給一個錯誤,打印出數組print_r($celebrities);的內容,並告訴我們您的輸出。

+1

「$ var」和「{$ var}」在PHP中是相同的。 – tamasd 2010-09-30 14:46:54

+0

哎呦..看起來像我的PHP有點生疏,謝謝。 – Kevin 2010-09-30 14:49:23

2
$celebrities = file('array.txt'); // possibly add an array_filter() 

// OR 
$celebrities = explode('\r\n', file_get_contents('array.txt')); 
+0

都給出了空的結果 – adam 2010-09-30 14:58:06

+0

我用你的問題的錯誤文件,你可能想result.txt,但它只是作爲一個例子。如果你在一個文件中每行有一個名人應該工作。 – Inigoesdr 2010-09-30 15:19:52

+0

是的,但我想從一個文件中獲取數組,然後使用該函數並將結果轉到另一個文件 – adam 2010-09-30 15:29:21

0

你也可以做到這一點在OSX工作的Linux和Windows:

$content = file_get_contents($file_name); 
$array = explode(PHP_EOL, file_get_contents('fileName.txt')); 

PHP_EOL回線的電流OS結束。

0

這是我如何存儲變量在一個文件中:

<?php 

    return array(
     'db' => array(
      'host' => '127.0.0.1', 
      'port' => '3306', 
      'database' => 'someDatabase', 
      'username' => 'someUsername', 
      'password' => 'somePassword' 
     ) 
    ); 

然後我給你的變量$ MariaDB的使用這個命令:

$MariaDB = include("read.php"); 

這是我一個例子,如何訪問的變量:

$dsh = "mysql:host=" . $MariaDB['db']['host'] . ";dbname=" . $MariaDB['db']['database']; 
$dbh = new PDO($dsh, $MariaDB['db']['username'], $MariaDB['db']['password']);