PHP Döngü ... bazı tavsiyeler gerekir

5 Cevap

Ben aşağıdaki kodu vardır:

$q1 = $_POST["q1"];
$q2 = $_POST["q2"];
$q3 = $_POST["q3"];
$q4 = $_POST["q4"];
$q5 = $_POST["q5"];
$q6 = $_POST["q6"];
$q7 = $_POST["q7"];
$q8 = $_POST["q8"];

Şu anda, bu sabit kodlanmış ve elle bunu her zaman değiştirmek gerekir, ben bunu manuel bir işlem olmadığını bunun yerine değişkenleri kullanmak istiyorum.

Bir döngü kullanarak bir durumda iken veya foreach, mı?

Ben olsaydı bir dizi bilgisi $ q ve q yardımcı olacağını?

Teşekkürler,

Homer.

5 Cevap

Örneğin, Dizi notasyonu kullanmak için formlar ayarlama düşünün

<ul>
    <li><input name="q[]" /></li>
    <li><input name="q[]" /></li>
    <li><input name="q[]" /></li>
    <li><input name="q[]" /></li>
    ...
</ul>

Bu $_POST['q'] daha sonra kolayca foreach Böyle ile üzerinde yineleme 'q' için verilen tüm giriş değerleri ile bir dizi içerir yapacak:

foreach($_POST['q'] as $q) {
    // do something with $q
}

Bkz http://www.johnrockefeller.net/html-input-forms-sending-in-an-array-in-php/

Evet bu bir döngü için zamanı. Siz foreach veya süre kullanabilirsiniz, bu gerçekten önemli değil.

$i = 1; 
$q = array(); 
while($i < 9) {
    $q[$i] = $_POST["q" . $i];
    $i += 1;
}

1..

$keys = array('q1', 'q2', 'q3', 'q5', 'q9');
$q = array();
foreach ( $keys as $key ) {

  $q[$key] = isset($_POST[$key]) ? $_POST[$key] : null;
}

2.

$keys = array('q1', 'q2', 'q3', 'q5', 'q9');
foreach ( $keys as $key ) {
  $$key = isset($_POST[$key]) ? $_POST[$key] : null;
}
// in output you will have variables called $q1, $q2, $q3, ...

3.

$amount = 8;
$q = array();
for ( $i = 1; $i <= $amount; ++$i ) {
  $q[$i] = isset($_POST['q' . $i]) ? $_POST['q' . $i] : null;
}

Geçen PHP kullanılan bu yana denenmemiş ve bir süre oldu:

$q = array();
for ($i = 1; $i <= 8; ++$i)
    $q[$i] = $_POST["q" . $i];

Başka bir diziye POST verileri kaydetmek ile ok eğer durumda, aşağıdaki kodu deneyin:

// Random POST array
$_POST["q1"] = 1;
$_POST["q2"] = 2;
$_POST["q3"] = 3;
$_POST["q4"] = 4;
$_POST["q5"] = 5;
$_POST["q6"] = 6;
$_POST["q7"] = 7;
$_POST["q8"] = 8;

$array = Array( );

foreach ( $_POST as $value ) {
    $array[ ] = $value;
}

Eğer daha spesifik değişkenlere POST verilerini kaydetmek istediğiniz durumda, kod biraz daha karmaşık bir parça kullanmak gerekecek. Daha fazla seçenek görmek istiyorsanız benim yazı düzenleyebilirsiniz.

Edit:

Sadece q ile başlar ve sayı ile sona tuşları ile çalışmak istiyorsa, aşağıdaki kodu kullanabilirsiniz:

$array = Array( );

foreach ( $_POST as $key => $value ) {
    if ( preg_match( "/^[q]{1}\d$/", $key ) ) {
        $array[ ] = $value;
    }
}