#php #xml #arrays
#php #xml #массивы
Вопрос:
В моем приложении у меня есть две страницы. Индекс и движок. В Index в основном используются скрипты jQuery, и основными двумя из них являются функции автоматической загрузки для engine.php файл, который происходит каждые 3 минуты, а другой — кнопка «показать еще», которая показывает еще 10 сообщений при нажатии.
$feeds = array('','');
$entries = array();
foreach ($feeds as $feed) {
$xml = simplexml_load_file($feed);
$entries = array_merge($entries, $xml->xpath('/rss/channel//item'));
}
То, что я ищу, — это способ отделить $feeds = array('','');
часть, загруженную с engine.php каждые 3 минуты или щелчком мыши.
Каковы ваши предложения по этому поводу?
Ответ №1:
Я не уверен, что понимаю ваш вопрос, но глобальные переменные определяются в php, если они определены вне всех функций. Чтобы использовать их внутри, вы должны ссылаться на него так, прежде чем использовать его:
$variable = ""; //this variable is global
function test(){
global $variable;
//now you can use your variable
}
Если вы имели в виду, что значение вашей переменной должно сохраняться между запросами, то я бы посоветовал вам использовать массив $ _SESSION (ссылка).
Если это не ответит на ваш вопрос, дайте мне знать.
Редактировать для обновленного ответа
Вам придется каким-то образом сохранить массив $feeds. Я думаю, что самым простым способом было бы использовать сеанс, но это не сделает массив доступным для всех пользователей, как вы упомянули. Поэтому я бы посоветовал вам сохранить список каналов в файле, чтобы вы могли получать доступ к одной и той же информации каждый раз для всех пользователей.
Делая это, вы можете создать новый скрипт, который будет обновлять файл всякий раз, когда вы захотите (т.е. каждые 10 минут), и engine.php придется только работать непосредственно с файлом.
Вам нужна конкретная помощь с кодом для этого предлагаемого решения? Помогает ли это вам решить вашу проблему?
Правка2
Чтобы сохранить ваш массив $feeds в файл, просто выполните следующие действия (я думаю, эту часть вы уже знаете):
$fp = fopen("feeds.txt", "a");
if($fp) {
foreach($feeds as $line) {
fwrite($fp, $line."n");
}
fclose($fp);
}
И чтобы загрузить тот же файл, вы можете сделать это:
$feeds = file("feeds.txt"); //This will load each line into a different position of the array $feeds.
Если вы хотите сериализовать массив $entries, я бы посоветовал взглянуть на функции serialize amp; unserialize
Комментарии:
1. На самом деле я попробовал некоторый код, который я нашел, который сохраняет массив в файле. Я поместил его после первого
foreach
, но в нем говорится, что он не может сериализовать массив SimpleXML. Любая помощь в этом кодировании была бы признательна.2. пожалуйста, опубликуйте то, что у вас есть на данный момент.
3. С другой стороны, не следует ли мне сохранить его как XML-файл?
4. Зависит от того, что вы хотите .. иногда XML может быть слишком подробным и добавлять ненужные накладные расходы в ваш код.
5. Я думаю, я хочу сохранить его как массив, таким образом, мне не придется менять весь свой код