Nasıl, bir $ _POST değişkenin adını ayıklamak değil, onun value_

5 Cevap

I am building a function that will validate the values in a form. How can I extract the actual name in string form from a $_POST variable? Ex: $_POST['first_name'] = 'Joe';

Ben şimdi dize 'ilk_ad' kapmak ve bu isimde bir değişken bildirmek üzere bir fonksiyon kullanmak istiyorum. Ben bir foreach döngüsü kullanabilirsiniz ama bunu yapmak için daha kolay bir yol değildir biliyor musun?

5 Cevap

Bildiğim kadarıyla ben anladım, sen array_keys($_POST) arıyoruz.

Nasıl hakkında

extract($_POST);

Ben bu ne istediğiniz olup olmadığından emin değilim, ama variable variables şöyle kullanabilirsiniz:

$fieldname = "first_name";

$fieldvalue = $_POST[$fieldname];

$$fieldname = $fieldvalue;   // Creates a variable named "first_name"

echo $first_name;  // Outputs the POST variable

Ben bu kullanmak olmaz:

foreach( $_POST as $key => $value ) {
     $$key = $value;
}

... Birisi kötü niyetle formu aracılığı ile program dahilinde değişkenler ayar olasılığı kodunuzu açılır. (Yani, etkili biçimde globals_register ayarlanması)

Ama çekirdek soru cevap: yayınlanmıştır değişkenlerin sizin sadece bilgi $ _POST dizi şeydir; değişken adları ne olduğunu bulmak için tek yolu, dizi anahtarları döngü edilir.

Eğer anahtar adına göre fonksiyonunu çalıştırmak istiyorsanız, en iyi atış böyle bir şey olacaktır:

foreach ($_POST AS $key => $value)
{
    call_user_func("example_func_$key", $value);
}

İlk parametre çift tırnak içinde $key kullanımına dikkat call_user_func. Bu bir "dinamik" adlı-fonksiyonunu çalıştırmak için izin verecektir.