使用变量从xml文件调用数组

时间:2014-05-12 21:22:15

标签: php xml query-string

我在处理这个问题时遇到了一些麻烦,但我想我可以在展示代码后更好地解释它: 这是我的xml文件(test.xml)

<?xml version="1.0" encoding="utf-8"?>
<root>
<entry id="1">
  <post>05/12/2014 12:00:00</post>
  <page>1</page>
  <part>1</part>
  <body>BODY TEXT 1</body>
</entry>
<entry id="2">
  <post>05/14/2014 12:00:00</post>
  <part>1</part>
  <page>2</page>
  <body>BODY TEXT 2</body>
</entry>
</root>

这是我的PHP代码(call.php)

<?php

if(isset($_GET['p']))
{
$p=$_GET['p'];
echo $p . "<br>";
$xml=simplexml_load_file("test.xml");
$day=$xml->entry[$p]->post;//<-----------PROBLEM AREA
$post=strtotime("$day");
echo $post . "<br>";
echo time() . "<br>";
if(time() >= $post) 
{
    echo $xml->entry[$_GET['p']]->page . "<br>";
    echo $xml->entry[$_GET['p']]->part . "<br>";
}
}else{
    echo "<p>Main Page Stuff</p>";
}
?> 

我遇到的问题是$ day变量。如果我用[1]或[0]替换[$ p],它运行得很好,但是我需要用变量调用它,所以我可以根据查询字符串更改XML文件的哪个部分,当前& #39; p = 1&#39;

echo $ p结果打印输出1或0取决于我放入URL的内容,因此$ _GET正常工作,但如果我将$ p或$ _GET放入entry []则会出错

Notice: Trying to get property of non-object in C:\wamp\www\xmltest\call.php on line 20

(第20行是标记为&#39;问题区域&#39;)

有没有办法解决这个问题所以我可以根据查询字符串调用第一个或第二个?

1 个答案:

答案 0 :(得分:1)

我找不到一种方法来制作我希望工作的解决方案,所以我通过为每个条目创建一个新的xml文件而不是将每个条目放在一个xml文件中来解决它。 用于加载xml文件的代码:

p="docs/".$_GET['p'].".xml";
if(file_exists($p))
{
  $xml=simplexml_load_file($p);
  $day=$xml->entry->post;
  $value = $xml->entry->body;
  echo "Part ".$xml->entry->part;
  echo "Page ".$xml->entry->page;
}