我有这段代码:
$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
处很弱。
我怎样才能做到这一点?
答案 0 :(得分:1)
命令行不支持没有解决方法的会话,因为会话通常依赖于cookie(命令行中不存在)或传递url查询参数。
相反,只需将您的号码转储到文件中,例如
file_put_contents('count.txt', $count);
然后在稍后阅读,例如
$count = file_get_contents('count.txt');