2015-04-02 106 views
-5

有誰知道爲什麼這個簡單的代碼不會工作?第二個循環似乎不會發生。任何想法爲什麼這個簡單的代碼不工作?

while(list($get_key, $get_value) = each($HTTP_GET_VARS)) { 
    if (!${$get_key}) { 
     ${$get_key}=$get_value; 
    } 
} 

while(list($keyone, $valueone) = each($HTTP_GET_VARS))  
{ 
    echo $keyone; 
} 
+0

'$ HTTP_GET_VARS'?爲什麼? – Ghost 2015-04-02 15:28:29

+0

投票結束,作爲題外話題:「尋求調試幫助的問題(」爲什麼這個代碼不工作?「)必須包含所需的行爲,特定問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無用。請參閱:如何創建最小,完整和可驗證示例。「 – 2015-04-02 15:29:53

+0

第二個WHILE顯然從未評估爲TRUE。而不是「=」它應該是「==」比較,不分配。 – BigScar 2015-04-02 15:32:06

回答

0

您的問題在於使用each()。它會記住它在數組中已經到達的索引,所以在第二個循環中沒有什麼可以循環使用,因此它的計算結果爲false。如果您使用reset()這應該解決問題。

while(list($get_key, $get_value) = each($HTTP_GET_VARS)) { 
    if (!${$get_key}) { 
    ${$get_key}=$get_value; 
    } 
} 

reset($HTTP_GET_VARS);//will put the pointer back to the first element 

while(list($keyone, $valueone) = each($HTTP_GET_VARS))  
{ 
    echo $keyone; 
} 

或者你可以只使用foreach(){}語法,這將始終從數組的第一個元素開始。

相關問題