0

我有这个代码:

$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,它应该第一次显示信息。但是,我第二次运行它时,它应该会显示该消息。很明显我variable scope在 PHP 方面很弱。我怎样才能做到这一点?

4

1 回答 1

3

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

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

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

然后稍后再读,例如

$count = file_get_contents('count.txt');
于 2013-01-15T16:51:53.013 回答