2010-01-26 3 views
1

je une forme qui présente un grand nombre d'entrées ...

<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 
. 
. 
. 

La valeur des attributs pour ces entrées peuvent être soit "0" ou "1".

Je voudrais utiliser cette information pour créer un tableau "searchTags" qui contient tous les attributs dont les valeurs sont mises à "1".

Je me demande quelle est la méthode la plus efficace et la plus sûre pour traiter cela en php. Actuellement j'ai une longue liste de si les déclarations comme si ...

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

Mais cela semble très verbeux. Y a-t-il une meilleure alternative?

Merci d'avance pour votre aide.

De cette façon, la boucle vous

Répondre

0

Mck89 est presque droite - pour obtenir le tableau requis:

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

Mais étant donné que la numérotation du tableau n'est pas pertinent alors il implique plutôt que la structure de données résultante ne peut pas être optimisé - une meilleure solution pourrait être:

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

Ou utilisez simplement array_filter() pour renvoyer les valeurs non nulles sans traduire les clés.

C.

+0

Merci pour la réponse. En ce qui concerne ceci: "Mais étant donné que la numérotation du tableau n'est pas pertinente, elle implique plutôt que la structure de données résultante peut ne pas être optimisée." Merci pour l'information. J'ai modifié le code pour compiler une chaîne au lieu d'un tableau, comme ceci: $ searchTags. = Substr ($ k, 10). ";"; – Travis

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

à travers le réseau de demandes et obtenir des valeurs seulement avec une clé qui contient « searchTag_ » et avec la valeur = 1

Questions connexes