-1

我有一个不会停止的 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;

   }
4

1 回答 1

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++;
}

编码时这似乎是一件小事,但可读性应该是你所做的一切的关键。即使需要多一点时间来实现,可维护性也显着提高。

于 2013-04-21T18:59:07.210 回答