2010-01-03 38 views
1

在我的驗證類我有這樣的:Codeigniter:使字段增加1至一個數字?

$fields['a_1'] = 'First Question'; 
    $fields['a_2'] = 'Second Question'; 
    $fields['a_3'] = 'Third Question'; 
    $fields['a_4'] = 'Fourth Question'; 

這是年紀大了 - 我對這些寫40,每個組都有匹配的驗證規則:

​​

是否有辦法說:

$fields['a_' . 1 - 17] = "One, Two" 

等...

只是curiou如果沒有,我會蠻橫的。

回答

1

你可以試試這個

$ar=array("One","Two","Three"); 

for($i=1;$i<18;$i++){ 
    $fields["a_".$i]=$ar[$i]; 
} 

其中$ar包含要以指定的值列表

0

你可以只使用範圍的foreach循環,如this page所示?

foreach (range(1, 17) as $i) { 
    $fields['a_' . $i] = "One, Two"; 
} 

或者,如果您需要參考值在另一個數組:

$other_array = ("some", "other", "values"); 
foreach (range(1, count($other_array)) as $i) { 
    $fields['a_' . $i] = $other_array[$i+1]; 
} 
+0

$ other_array.length in PHP ??那第二個片段是javascript和PHP的混合體 – ekhaled 2010-01-04 00:08:26

+0

是的,沒錯,謝謝 - 幾年以來沒有使用過PHP。爲什麼他們會使它成爲語言關鍵字而不是對象方法,這一點超出了我的想象。但它*是* PHP,LOL。 – 2010-01-04 00:36:16

+0

沒有probs,同時你正在編輯...你沒有在PHP中使用方括號來定義數組,應該是$ other_array = array(「some」,「other」,「values」); – ekhaled 2010-01-04 00:50:18

0

你可能會看到,如果你不能改變這個問題。 $ foo ['a_1']通常會寫得更好 - $ foo ['a'] [1] - 這會使得構建和使用它們更容易 - foreach($foo['a'] as $item) do_stuff($item);for($i=0; $i<$stop; $i++) do_stuff($foo['a_'.$i]);更容易,然後您可以使用數組以存儲驗證規則(以及任何其他關係)與項目本身一起:

$foo['a'] = array(array('fieldname' => 'First Question', 'rule' => 'hour')); 
+0

你想要溝通的東西有點高於我... – 2010-01-04 02:11:41

+0

如果你傾向於,你可以在irc.freenode.net上加入## PHP並找到我(TML),我會很樂意嘗試解釋這一點。我真的認爲它會爲您節省一些時間並提高代碼的整體可讀性。 – TML 2010-01-04 19:17:42