2012-01-08 7 views
-3

ここにIF文があります。私は後でtimeStampCleaned変数にアクセスしたい。If文の中にある変数にアクセスできないのはなぜですか?

if(empty($ratesTimeStamp)) { 

     $newXML = simplexml_load_file('cache/rates.xml'); 

     $child = $newXML->addChild('currency'); 
     $child->addAttribute('id', ''.$to.''); 
     $child->addChild('title', $toTitle); 
     $child->addChild('loc', $toLocation); 
     $child->addChild('rate', $finalRate); 
     $child->addChild('timestamp', $timeStamp); 

     $dom = new DOMDocument('1.0'); 
     $dom->preserveWhiteSpace = false; 
     $dom->formatOutput = true; 
     $dom->loadXML($newXML->asXML()); 
     $newXMLdomCleaned = $dom->saveXML(); 

     file_put_contents('cache/rates.xml', $newXMLdomCleaned); 
    } 

しかし、私はエラーを取得しています:

Notice: Undefined variable: timeStampCleaned in ...file... on line 208 

私が理解から、文が罰金の場合内の変数にアクセスするので、同様に

if ($xmlRatesTime = '') { 
     $timeStampCleaned = date('j F Y H:i', $ratesTimeStamp); // Convert unix timestamp into date format 
    } else { 
     // ... 
    } 

。だから私はなぜこれが動作していないのか分かりません!

おかげ

+1

を使用しています。 –

+0

'timeStampCleaned'変数をどこで取得しようとしていますか?あなたが貼り付けたコードではありません。 –

+2

IF文は条件付きであるため、最初にその変数をIF文の内部に使用する(つまりそこに定義されている)場合、実際に呼び出されたことを確認する必要があります。 IF文がスキップされた場合、後で使用するときは定義されません。 –

答えて

2

あなたの文のelse一部で変数を宣言していないので、それはおそらくです。 $xmlRatesTime''に等しくない場合は、$timeStampCleanedが作成されません。例えば、「他」の宣言を追加してみてください:

if ($xmlRatesTime = '') { 
    $timeStampCleaned = date('j F Y H:i', $ratesTimeStamp); 
} else { 
    $timeStampCleaned = ''; // add this here! 
} 

ものの、一般的に言えば、私はこれは悪いプログラミング手法であることがわかりました。サイドノートとして

$timeStampCleaned = ''; 
if ($xmlRatesTime = '') { 
    $timeStampCleaned = date('j F Y H:i', $ratesTimeStamp); 
} else { 
    //whatever 
} 

、あなたが$xmlRatesTime==''(2等号)を意味した:私はのように、完全に変数の前にif文を宣言推奨するのでしょうか?

+1

ありがとうございます。それは解決されました:)(はい、私も同じ意味でした!==同様に)おしゃべり – tctc91

+0

これを解決しても問題がなければ、助けてくれるでしょう) – cegfault

+0

前に投稿してから数分待たなければならなかった私は解決することができます。もう一度おねがいします:) – tctc91

1

1)は、私はPHPの男じゃない(以上、変数のスコープをよく読んで、それはこれを掘るために私に数秒かかった:http://php.net/manual/en/language.variables.scope.php

2)平等のテストは、あなたがやっていると思います平等テストではありません。テストケースを作成する=====

+0

可変スコープはここでは問題ありませんが、提供された情報では語れません(コードは関数内にあるとは言えません) –

関連する問題