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に新しい要素はありません」と表示されるように、の値が最後に格納されるようにすることです。 2回目に実行します。

テストの目的で、xmlに2つの要素があります。つまり、xmlは次のようになります。

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

したがって、これら2つの要素のみを使用してtest.phpを実行すると、最初に情報が表示されるはずです。しかし、2回目に実行すると、メッセージが表示されるはずです。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 に答える