[英]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.