2010-01-03 90 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