2010-09-30 2 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

Хотелось бы увидеть функцию «горячая». – Kevin

+0

Пожалуйста, не кричите на нас. – GZipp

ответ

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

ваш идеал замечательный, это на самом деле то, что я хочу сделать, загрузка из файла, а затем запись на другой, вы, например, вызываете какие-либо ошибки, но мой результат. Txt пуст – adam

+0

Это действительно работало, когда вы использовали массив? – Mischa

+0

работает, но ничего не пишет в файл, теперь пытается снова попробовать – adam

0

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

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

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

+1

«$ var» и «{$ var}» то же самое в PHP. – tamasd

+0

whoops .. выглядит как мой PHP немного ржавый, спасибо. – Kevin

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

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

оба дают пустой результат – adam

+0

Я использовал неверный файл из вашего вопроса, вам, вероятно, нужен файл result.txt, но это было действительно только в качестве примера. Если у вас есть одна знаменитость на строку в файле, она должна работать. – Inigoesdr

+0

да, но я хочу взять массив из файла, а затем использовать функцию, и результат переходит к другому файлу – adam

0

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

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

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

0

Это, как хранить переменные в файле:

<?php 

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

Тогда я задаю переменные в $ MariaDB с этой командой:

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

Это как пример I доступа к переменным :

$dsh = "mysql:host=" . $MariaDB['db']['host'] . ";dbname=" . $MariaDB['db']['database']; 
$dbh = new PDO($dsh, $MariaDB['db']['username'], $MariaDB['db']['password']); 
Смежные вопросы