Php $ _REQUEST değişkenlerin çok sayıda ile ilgili en verimli, güvenli yolu

2 Cevap php

I girişlerin bir sayıda gönderen bir forma sahip ...

<input type="hidden" name="searchTag_happy" value="0" />
<input type="hidden" name="searchTag_sad" value="0" />
<input type="hidden" name="searchTag_ambivalent" value="0" />
etc
.
.
.

Bu girişler "0" veya "1" olabilir için değer bağlıyor.

Ben değerler "1" olarak belirlenmiş herhangi özelliklerini içeren bir dizi "searchTags" oluşturmak için bu bilgiyi kullanmak istiyorum.

Ben php bu mücadele için en etkili, güvenli bir yöntemdir ne olduğunu merak ediyorum. Şu anda öyle gibi eğer tabloların uzun bir liste var ...

if ($_REQUEST['searchTag_happy']) $searchTagArray[] = "happy";
if ($_REQUEST['searchTag_sad']) $searchTagArray[] = "sad";
if ($_REQUEST['searchTag_ambivalent']) $searchTagArray[] = "ambivalent";
etc
.
.
.

Ama bu çok ayrıntılı görünüyor. Daha iyi bir alternatif var mı?

Yardımlarınız için şimdiden teşekkür ederiz.

2 Cevap

Mck89 neredeyse doğru - gerekli dizisini almak için:

foreach($_REQUEST as $k=>$req)
{
   if(strpos($k,"searchTag_")!==false && $req)
   {
       $searchTagArray[]=substr($k,10);
   }
}

Ancak dizinin numaralandırma uygun olmadığını verilen o zaman daha çok edilen veri yapısının en uygun şekilde ima - daha iyi bir çözüm aşağıdaki gibi olabilir:

       $searchTagArray[substr($k,10)]=1;

Ya da sadece tuşları çeviri olmadan sıfır olmayan değerler döndürmek için () array_filter kullanın.

C.

foreach($_REQUEST as $k=>$req)
{
   if(strpos($k,"searchTag_")!==false && $req)
   {
       $searchTagArray[]=$req;
   }
}

Bu şekilde TALEBİ dizi döngü almak ve sadece "searchTag_" içeren bir anahtar ve değer = 1 değerleri