PHP脚本中的一个关键功能我正在调试从外部站点上的XML文件中获取两个属性。这些属性在名为Channel的标记内标记为“code”和“locationCode”。问题是有时候locationCode被发布为一个空字符串('')或者根本没有为我不能使用的频道的网站定义,所以我需要遍历这些频道,直到找到一个非空的locationCode字符串。为此,我创建了一个while循环,但是我当前的实现没有成功遍历位置代码。有没有更好的方法来实现这个?
当前代码:
public function setChannelAndLocation(){
$channelUrl="http://service.iris.edu/fdsnws/station/1/query?net=".$this->nearestNetworkCode.
"&sta=".$this->nearestStationCode."&starttime=2013-06-07T01:00:00&endtime=".$this->impulseDate.
"&level=channel&format=xml&nodata=404";
$channelXml= file_get_contents($channelUrl);
$channel_table = new SimpleXMLElement($channelXml);
$this->channelUrlTest=$channelUrl;
//FIXME: Check for empty locationCode string
$this->channelCode = $channel_table->Network->Station->Channel[0]['code'];
$this->locationCode = $channel_table->Network->Station->Channel[0]['locationCode'];
$i = 1;
while($this->locationCode=''){
$this->channelCode = $channel_table->Network->Station->Channel[$i]['code'];
$this->locationCode = $channel_table->Network->Station->Channel[$i]['locationCode'];
$i++;
}
}
答案 0 :(得分:1)
我可以通过这一行看到两个问题:
while($this->locationCode=''){
首先,当你想要的是比较(=
)时,你输入了一个作业(==
)。因此,该行不是测试条件,而是覆盖$this->locationCode
的当前值,然后测试''
的“真实性”,其评估为false
,因此{{1循环永远不会运行。
其次,示例XML文件显示该属性实际上不是空的,但包含一些空格。假设这些是您要忽略的值(现在样本中没有任何值具有任何其他值),您可以使用trim()
来消除比较中的空白,为您提供:
while