2012-01-08 106 views
-3

这是IF语句。我想稍后访问timeStampCleaned变量。为什么我不能访问If语句中的变量?

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

像这样:

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 

从我的理解,如果报表是精细内访问变量。所以我不知道为什么这不起作用!?

感谢

+1

制作一个测试用例。 – 2012-01-08 19:50:13

+0

你在哪里试图获得'timeStampCleaned'变量?不在你粘贴的代码中。 – 2012-01-08 19:52:46

+2

IF语句是有条件的,所以如果你第一次使用这个变量在你的IF语句中(即在那里定义),那么你必须确保它被实际调用。如果你的IF语句跳过它,当你稍后使用它时,它将是未定义的。 – 2012-01-08 19:53:12

回答

2

这可能是因为你没有在声明else部分声明变量。如果除非$xmlRatesTime等于'',则不会创建$timeStampCleaned。尝试在“else”中添加一个声明,例如:

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

虽然,一般来说,我觉得这是不好的编程习惯。我会建议在声明变量之前 if语句完全,如:

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

作为一个侧面说明,你的意思是$xmlRatesTime==''(两个等号)?

+1

谢谢。这是解决它:)(是的,我确实意味着==以及糟糕!) – tctc91 2012-01-08 20:00:08

+0

,如果你不介意这标志着作为解决,它会帮助我;) – cegfault 2012-01-08 20:08:22

+0

有它会前发布后等待几分钟让我解决。再次感谢:) – tctc91 2012-01-08 20:20:06

1

1)读了更多的变量范围(我不是一个PHP的人,但我花了几秒钟挖这件事:http://php.net/manual/en/language.variables.scope.php

2)平等的测试,你以为你在做根本不是平等测试。使用=====

+0

变量范围_might可能是这里的一个问题,但不能用提供的信息告知(他没有说代码在函数内部) – 2012-01-08 19:58:20

相关问题