2015-04-01 43 views
2

所以我最近使用了一些代碼,我想知道它是如何工作的,因爲我不喜歡使用我不明白的東西和我在哪裏得到的東西代碼沒有顯示它是如何工作的。它所做的是將所有選中的複選框附加到變量$信息。不能理解FOREACH循環中發生了什麼PHP

這裏是我使用的代碼,提交的表單和PHP腳本

<form name="checkboxform" action="" method="post"> 
<input type="checkbox" name="ninjas[]" value="stuff">stuff<br> 
<input type="checkbox" name="ninjas[]" value="more stuff">more stuff<br> 
<input type="submit" value="submit" name="submit"> 
</form> 

所以當我點擊提交此函數運行

//excuse the ninja naming part, needed to have a laugh cause this was so frustrating :) 
function sneakyNinjas() { 
$array = $_POST['ninjas']; 
$information = ""; 
foreach ($array as $key => $value) { 
    $information .= $value; 
} 

所以我得到它循環遍歷每個值數組,這就是爲什麼我將它們命名爲這樣的原因。
但是$ keys => $ value部分是我不明白的。

它如何確定複選框被點擊的時間?
它使用與數組一起發送的布爾值嗎?

任何幫助理解過程將不勝感激或鏈接,所以我可以讀它,因爲我到目前爲止沒有發現任何東西,並通過一切手段糾正我,我錯了我說的任何東西。

+0

$ _POST是一個關聯數組。我只應該給你價值的關鍵是'忍者'。 – lciamp 2015-04-01 01:59:10

+0

提示:你可以使用'foreach($ _POST ['ninjas']作爲$ value){'...;你不使用$鍵,你不需要創建一個新變量$ array – 2015-04-01 02:00:18

+0

甜,這是我的下一個問題。謝謝:) – user3634933 2015-04-01 02:00:54

回答

2

當提交HTML表單時,只會提交已選中的複選框的值。未選中或禁用複選框被省略,因此您的數組只包含選中的值。

+0

謝謝,現在有道理:) – user3634933 2015-04-01 02:01:05

0

$ _POST是一個關聯數組。它只應該給你價值的關鍵是'忍者'。

+0

'如果「ninjas」是你的複選框,它將會有一個真值或假值。「 - 不正確:如果你勾選了這個複選框,它會有你指定的值,或默認爲「開啓」,否則它根本不會存在於帖子數組 – 2015-04-01 02:01:42

+0

有用的信息。我概率。使用空()太多。 ;) – lciamp 2015-04-01 02:04:24

0

我相信在提交表單時只傳遞選中的複選框。在你的循環中,$ key是傳遞的字段名,$ value是它的值(匹配HTML中的屬性)。未經檢查的字段不應該存在(如果我沒有記錯的話)。

+0

如果他正在循環'$ _POST'數組,那麼會是真的,但是因爲他正在循環$ _POST ['ninjas']''$ key'將是數組的數字索引 - 在這裏不太有用情況 – 2015-04-01 02:11:04