Загрузить переменную массива из файла - PullRequest
1 голос
/ 30 сентября 2010

У меня есть следующий код, который использует массив для записи результата в файл. Я хочу создать другой массив для чтения массива знаменитостей из другого файла.

<?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 ]

2 голосов
/ 30 сентября 2010
$celebrities = file('array.txt'); // possibly add an array_filter()

// OR
$celebrities = explode('\r\n', file_get_contents('array.txt'));
1 голос
/ 30 сентября 2010

Я не вижу проблем с вашим кодом. Что именно не работает? Есть сообщения об ошибках?

Почему вы читаете файл в массив? Мое предложение:

$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 голосов
/ 05 июня 2015

Вот как я храню переменные в файле:

<?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'] );
0 голосов
/ 05 июня 2015

Вы также можете сделать это для работы в OSX Linux и Windows:

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

PHP_EOL возвращает конец строки для текущей ОС.

0 голосов
/ 30 сентября 2010

Поскольку вы разделяете каждую запись массива новой строкой / возвратом каретки, вы должны построчно читать содержимое файла и присваивать каждую из них вашему массиву, что, похоже, вы делаете.Возможно, поможет объявление массива перед его использованием, т.е. $celebrities = array(); перед вашим циклом.В противном случае, похоже, что $ celebrities переопределяется при каждой итерации цикла.

Если вы предоставите больше информации о том, что не работает (ошибка синтаксического анализа? Содержимое массива?), То я мог бы предоставить более подробный ответ.

Если код не выдает ошибку, распечатайте содержимое массива print_r($celebrities); и покажите нам ваш вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...