在每次执行脚本时存储变量值 - PHP

时间:2013-01-15 16:28:41

标签: php xml

我有这段代码:

$filename = 'files.xml';
$dom = new DomDocument();

$dom->load($filename);

$oldCount = '';

$newCount = $dom->getElementsByTagName('file')->length;

if($newCount == $oldCount){
echo "There are no new elements in the XML.\n";
}

else {
 echo "New Count is: ".$newCount."\n";
 echo "Old Count is: ".$oldCount."\n";

for ($oldCount =0; $oldCount < $newCount; $oldCount++){
    $file = file_get_contents('files.xml');
    $xml = simplexml_load_string($file); 

    $result = $xml->xpath('file');
    echo "File ".($oldCount+1).": ".$result[$oldCount]."\n\n";
    //echo "Old: ".$oldCount."\n";
    //echo "New: ".$newCount."\n";
   }
   $oldCount = $newCount;
   //echo "Old Count at the end: ".$oldCount."\n";
}
echo "Old Count at the end: ".$oldCount."\n";

我想要做的是确保$oldCount的值存储在最后,这样,如果files.xml中包含相同数量的元素,它将显示 - “没有新元素在XML中“当程序第二次运行时。

出于测试目的,我的xml中有2个元素,这意味着我的xml看起来像:

<?xml version="1.0"?>
<files>
  <file>.DS_Store</file>
  <file>ID2PDF_log_2.xml</file>
</files>

所以,如果我只用这两个元素运行我的test.php,它应该第一次显示信息。但是,第二次运行它时,它应该显示消息。 很明显我在PHP variable scope处很弱。 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

命令行不支持没有解决方法的会话,因为会话通常依赖于cookie(命令行中不存在)或传递url查询参数。

相反,只需将您的号码转储到文件中,例如

file_put_contents('count.txt', $count);

然后在稍后阅读,例如

$count = file_get_contents('count.txt');