2013-04-21 2 views
-2

WHILE 루프가 실행 중이며 멈추지 않습니다. while 조건을 $ x50으로 변경하면 예상 한대로 작동하지만 많은 빈 결과가 반환됩니다. 더 이상 데이터가 없으면 중단하고 싶습니다.while 루프가 조건에서 멈추지 않음

$ x = 20으로 설정하여 조건을 검사하고 $ y의 var_dump를 수행하면 NULL을 반환하므로 $ y == NULL 일 때 루프가 멈추지 않는 이유를 알 수 없습니다.

치명적인 오류 : 허용 된 메모리가 계속 소모됩니다.

$ y 변수를 문자열로 캐스팅하고 $ 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

'$ y'는 루프에서 절대로 변경되지 않으므로'while()'루프는 무한 루프입니다. – nickb

+0

'while ($ y! == NULL)'을 사용하고 있다고 가정하고 있습니까? 이 작업은'foreach'로해야합니다 ... foreach ($ y와 $ item) {// 여기서 각 배열 항목을 사용하십시오}' – brbcoding

+3

루프에서'$ y'를 변경하지 마십시오. 'foreach' 루프를 시도하십시오. – Jon

답변

0

내가 있으리라 믿고있어 같은 배열의 배열이지만, 다시 궤도에 당신을 얻을 것이다.

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

코딩 할 때 작은 것처럼 보일 수 있지만 가독성은 모든 작업의 ​​핵심입니다. 구현하는 데 약간의 시간이 걸리지 만 유지 관리 가능성이 훨씬 높습니다.

+1

모두에게 감사드립니다! $ y를 반복 할 때마다 $ y가 변경되었다고 생각했습니다. 이제는 foreach 루프가 훨씬 더 좋습니다. – jimlongo

관련 문제