2

これは私のxmlです。

    <episodes>
        <episode>
           <series_name>Test</series_name>
            <season_number>1</season_number>
            <episode_number>10</episode_number>
            <episodes_in_season>12</episodes_in_season>
            <notes>Testing</notes>
         </episode>
    </episodes>

私がしたいのは、シーズン/エピソード番号の数を取得し、その xml から i をインクリメントまたはデクリメントしてから保存することです (私のページには、season_number と episode_number の +/- ボタンがあり、`$_post を使用しています)そのボタンの場合)。

これまでのコードは次のとおりです。

$xmlDoc = new DOMDocument();
$xmlDoc->load($user);
$xpath = new DOMXpath($xmlDoc);
$test = $xmlDoc->getElementsByTagName('episode')->item(0);

// example for episode number increment / decrement (what i think)

   $number = $test->childNodes->item(2); 

    $increment = $number + 1; 
    $decrement = $number - 1; // example 

私はここで立ち往生しており、クラスDOMElementのオブジェクトをintに変換できませんでしたという$numberエラーが発生しているため、何が起こっているのかがわからないため、完了しませんでした。

私もそれを試しました (int)$number = $test->childNodes->item(2);が、運がありませんでした。また、私はphpの初心者なので、このことをすべて間違っている可能性があります。

編集:

  $eNumber = $xpath->query('episode_number', 'episode')->item(0);
      $esNumber = $xpath->query('episodes_in_season', 'episode')->item(0);
     if ($eNumber == $esNumber)
     {
        echo "You have reached the max episode in season";

     }
     else
     {

     $eNumber->nodeValue++;
     }

最大エピソードに到達したと常に表示される

4

2 に答える 2

2

が episode_number に対応する場合$numberは、次のようにしてインクリメントします。DOMElement

$number->nodeValue++;

ところで、代わりに、$number = $test->childNodes->item(2);常に正しい要素を指定するように XPath をお勧めします。

$number = $xpath->query('episode_number', $test)->item(0);
于 2013-02-04T11:50:19.523 に答える
2

使用しているDOMNodelist::item()メソッドは値 (文字列でも整数でもない) を返さず、ノードを返します。

DOMNode DOMNodelist::item ( int $index )

そのため (Xpath クエリが正しいと仮定すると)、そのnodeValueプロパティにアクセスして数値を読み取る必要があります。次に、整数にキャストする場合は、結果を変数に割り当てる前に必ずキャストしてください。

$number = (int)$test->childNodes->item(2)->nodeValue; 

...ただし、数学を実行するとすぐにPHPが自動的に実行するため、通常は必要ありません。

$foo = '33';
var_dump($foo); // string(2) "33"
$foo++;
var_dump($foo); // int(34)
于 2013-02-04T11:35:09.240 に答える