簡體   English   中英

Codeigniter奇怪的form_dropdown錯誤混合索引

[英]Codeigniter weird form_dropdown bug mixed index

我在Codeigniter 2.1.3版中的form_dropdown幫助器遇到了一個奇怪的問題。

如下代碼:

print_r($country_options);

echo form_label('Country:','country') . 
form_dropdown('country',$country_options, 0);
...

產出

Array ( [0] => All [Australia] => Australia )

<label for="country">Country:</label>
<select name="country">
<option value="0" selected="selected">All</option>
<option value="Australia" selected="selected">Australia</option>
</select>

我沒看到什么?

問題,而不是僅在form_dropdown函數的第三個參數中設置了下拉菜單“ All”,而是選擇了兩個下拉選項,即使第二個選項的鍵為“ Australia”

這是php in_array函數的特性; 不幸的是,我無法完全向您解釋它,但是它圍繞您使用0作為鍵:

form_helper中的代碼是:

$sel = (in_array($key, $selected)) ? ' selected="selected"' : '';

$ key ='Australia'&$ selected實際上是一個數組,array(0 => 0);

現在,php中發生怪異的地方是:

每當您使用計算結果為false的鍵(即false,0,'')時,最終都會匹配所有字符串值。 您可以嘗試使用不同的數組來查看。

因此,按照Deepanshu的建議進行操作並使用Array([0] =>所有[1] =>澳大利亞)

編輯:更多調查顯示原因並非100%正確,但解決方案仍然有效。 我認為問題很簡單,與數組值相比,字符串被評估為0

更多信息: 為什么PHP認為0等於字符串?

暫無
暫無

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

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