簡體   English   中英

有人可以為我解釋一下PHP的while循環嗎?

[英]Could someone explain me this while loop for PHP?

有人可以解釋一下這個while循環嗎?

while (list($key, $value) = each($HTTP_GET_VARS)) {
       $get_url .= $key . '=' . $value . '&';
    }

我知道它很愚蠢,但很多時候愚蠢的事情會產生很大的不同。

$HTTP_GET_VARS是已棄用的數組,其中包含在查詢字符串中傳遞的參數。 each()是一個遍歷數組並返回一個包含鍵和數組“當前”元素值的數組的函數。 list()是一種語言構造,它將分配給它的數組分解為傳遞給它的變量。

當到達數組的末尾時, each()返回一個假值,導致循環退出。

each ()函數返回給定數組的當前鍵和值,然后將數組指針(當前項)向前移動一個。

因此,多次調用它是一種順序遍歷數組中各項的方法,當到達末尾時,each()只是停止返回值。

list ()不是函數,而是語言構造; 這是一次設置多個變量的快捷方式。 在發布的示例中,將$ key設置為each()返回的數組中的第一個值(當前鍵),將$ value設置為第二個值(當前值)。

該代碼段存在許多問題。

  1. 像這樣使用each()之前,應該復位數組指針,因為您不應該假定該代碼執行時數組指針位於開始位置。
  2. 它連接到查詢字符串中的值應轉義(例如,通過urlencode())。
  3. 它還在查詢字符串的末尾不必要地留了一個單獨的'&'字符。
  4. $ HTTP_GET_VARS是PHP不推薦使用的功能; 應將其替換為$ _GET。
  5. 與for相比,使用foreach()在數組上進行迭代更容易閱讀,而且也可能更快。

當您遍歷數組時, each數組each返回一個包含當前鍵和值的數組。 list使您可以將數組解壓縮為多個變量。 我發現foreach構造更加清晰。

foreach ($some_array as $key => $value)
{
    ...
}

正如Ignacio所述,不建議使用HTTP_GET_VARS 您可以改用$_GET

循環遍歷數組$ HTTP_GET_VARS中的每對HTTP GET參數,並按該順序將對的兩側分配給兩個變量$ key和$ value。

賦值“返回”其值,因此,在數組的末尾,each()將返回false,盡管賦值將導致while條件中止。

在循環內部,每個$ key和$ value都會以某種格式附加到字符串$ get_url中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM