我有一个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;
}
答案 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++;
}
编码时看起来似乎很小,但可读性应该是您所做的一切的关键。即使需要花费更多的时间来实现,可维护性也要高得多。