2011-12-07 4 views
0

다음 코드는 nodeValues ​​집합을 반복하고 특정 문자로 시작하면 노드에서 중지한다고 가정합니다. 나는 매우 새로운 루핑이지만 다음 코드가 작동 할 것이라고 생각했다. 내가 뭘 잘못하고 있니?While 루프를 사용하여 DOMNodes를 반복합니다.

$file = $DOCUMENT_ROOT. "http://website.com"; 
$doc = new DOMDocument(); 
@$doc->loadHTMLFile($file); 


$elements = $doc->getElementsByTagName('td'); 

$i=0; 
while (trim(substr($elements->item($i)->nodeValue, 0, 3)) !== "MON" | "TUE"){ 

     echo $elements->item($i)->nodeValue; 
     $i=$i+1; 

     }; 
+0

'!'에'='를 너무 많이 사용했습니다. '! =='이어야합니다. –

+0

또한, "Mon"| "TUE". 아마 현재'nodeValue'를''Mon ''또는''TUE "'와 비교하려고 할 것입니까? –

+0

"nodeValue가 MON 또는 TUE와 같지 않은 동안이 작업을 반복하십시오." – Shawn

답변

0

while 상태에서 중요한 논리 및 연산자 문제가 있습니다. |은 비트 단위 OR 비교이므로 노드 값이 MON 또는 TUE와 같지 않은 한 루프를 계속해야하므로 논리 AND &&을 사용하는 것이 좋습니다.

while 루프 외부의 nodeValue 및 가독성을 위해 변수 비교 :

$i = 0; 
// Store the first node value ahead of the loop 
$currentNode = trim(substr($elements->item($i)->nodeValue, 0, 3)); 
// Test it's neither MON nor TUE 
// That is, "not equal to 'MON' *AND* not equal to 'TUE'" 
while ($currentNode !== "MON" && $currentNode !== "TUE") { 
    echo $elements->item($i)->nodeValue; 
    $i=$i+1; 
    // Then reassign $currentNode after $i increments 
    $currentNode = trim(substr($elements->item($i)->nodeValue, 0, 3));  
} 
관련 문제