while循环不会在条件匹配时停止

时间:2013-04-21 18:31:56

标签: php while-loop

我有一个WHILE循环运行,不会停止。如果我将while条件更改为$ x< 50,它将按照我的预期进行,但会返回很多空结果。一旦没有更多数据,我想停止。

如果我通过设置$ x = 20检查条件并执行$ y的var_dump它将返回NULL,所以我无法弄清楚当$ y == NULL时循环不会停止的原因。

我一直收到致命错误:允许内存耗尽。

我已经尝试将变量$ y转换为字符串并检查$ y!==“”和其他变体,但循环似乎无法识别条件并停止。

感谢您的帮助。

$c=1;
$x=0;
$y=$xmlobj->simpleXML->table1->Detail_Collection->Detail[$x];

while($y!==NULL){
    $obj->table_data['country_' . $c] = array();
    $obj->table_data['country_' . $c]['country'] = (string)$xmlobj->simpleXML->table1->Detail_Collection->Detail->{$x}['COUNTRY'];
    $obj->table_data['country_' . $c]['fund_percentage'] = (string)$xmlobj->simpleXML->table1->Detail_Collection->Detail->{$x}['FUNDPCT'];
    $obj->table_data['country_' . $c]['index'] = (string)$xmlobj->simpleXML->table1->Detail_Collection->Detail->{$x}['Index'];

    ++$x;
    ++$c;

   }

1 个答案:

答案 0 :(得分:0)

这可能需要搞乱,取决于你的代码的其余部分以及$ y是否是我假设的数组数组,但它应该让你回到正轨。

$count = 1;
$y=$xmlobj->simpleXML->table1->Detail_Collection->Detail[$x];

foreach($y as $row){
    $obj->table_data['country_' . $count] = array();
    $obj->table_data['country_' . $count]['country'] = $row['COUNTRY'];
    $obj->table_data['country_' . $count]['fund_percentage'] = $row['FUNDPCT'];
    $obj->table_data['country_' . $count]['index'] = $row['Index'];
    $count++;
}

编码时看起来似乎很小,但可读性应该是您所做的一切的关键。即使需要花费更多的时间来实现,可维护性也要高得多。