Codeigniter: Bir numaraya kadar 1 ile saha artış yap?

3 Cevap php

Benim doğrulama sınıfında bu var:

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

Bu yaşlanıyor - Ben yazmak için yaklaşık 40 bu var, ve her set doğrulama kurallara uyan etti:

    $rules['a_1'] = 'hour';
    $rules['a_2'] = 'hour';
    ...

Demek için bir yolu var mı:

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

Vs ..

Değilse, sadece merak ..., ben kaba kuvvet olacak.

3 Cevap

Bu deneyebilirsiniz

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

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

burada $ar sırayla atamak istediğiniz değerler listesini içerir

Gösterildiği gibi sadece bir dizi ile bir foreach döngü kullanabilirsiniz this page?

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

Yoksa başka bir dizideki değerleri başvurmak gerekirse:

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

Eğer soruyu değiştiremezsiniz eğer görebilirsiniz. Bu yapımını yapacak ve onlarla çalışmak daha kolay - - foreach($foo['a'] as $item) do_stuff($item); {[gibi bir şey çok daha kolaydır $ foo ['A_1'] [1] genellikle daha $ foo ['a'] şeklinde yazılır (1)]}, ve sonra öğenin kendisi yanında geçerlilik kuralı (ve herhangi bir başka ilişki) depolamak için dizi kullanarak yapabilirsiniz:

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