从文件加载数组变量

时间:2010-09-30 14:29:00

标签: php arrays file

我有以下代码,它使用数组将结果写入文件。 我想创建另一个数组来从另一个文件中读取名人数组。

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

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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);

答案 2 :(得分:0)

由于您要通过换行符/回车符分隔每个数组条目,因此您应该逐行读取文件的内容并将每个数据分配给您的数组,这看起来就像您正在做的那样。也许在使用之前声明数组会有所帮助,即在循环之前$celebrities = array();。否则,每次你的循环迭代时,看起来$名人都会被重新定义。

如果你提供更多关于什么不起作用的信息(解析错误?数组的内容?),那么我可以提供更详细的答案。

如果代码没有出错,请打印出数组print_r($celebrities);的内容并向我们显示您的输出。

答案 3 :(得分:0)

你也可以在OSX linux和Windows中工作:

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

PHP_EOL返回当前操作系统的行尾。

答案 4 :(得分: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'] );