2010-07-09 65 views
0

我的形式有一個選擇窗口小部件問題:symfony的:大約一個選擇窗口小部件

$years = range(14,130); 
$this->widgetSchema['age'] = new sfWidgetFormSchema(); 
foreach (array('from', 'to') as $value) 
{ 
    $this->widgetSchema['age'][$value] = new sfWidgetFormChoice(array(
     'label' => $value, 
      'choices' => array_merge(array('' => '-'),array_combine($years,$years)))); 
} 

如果讓我選擇,例如14,並在接收的形式被寫入像這樣的動作:

var_dump($valores_widgets['age']['from']); 

顯示爲0.但我期待14.

任何想法?

問候

哈維

回答

3

檢查的array_merge文檔:

然而,如果數組包含 數字鍵,後來價值不會 覆蓋原來的值,而是會附加 。

如果所有陣列的僅含有 數字鍵,所得到的數組是 從 從零開始遞增給定按鍵。

簡單的測試:

[email protected]:~$ php --run '$years=range(14,16);var_dump(array_merge(array("" => "-"), array_combine($years,$years)));' 

array(4) { 
    [""]=> 
    string(1) "-" 
    [0]=> 
    int(14) 
    [1]=> 
    int(15) 
    [2]=> 
    int(16) 
} 

所以你的$幾年數組被合併過程中進行索引。當使用+運營商代替時:

[email protected]:~$ php --run '$years=range(14,16);var_dump(array("" => "-") + array_combine($years,$years));' 

array(4) { 
    [""]=> 
    string(1) "-" 
    [14]=> 
    int(14) 
    [15]=> 
    int(15) 
    [16]=> 
    int(16) 
} 
相關問題