2013-04-09 5 views
-3

Je me demandais s'il y avait un moyen rapide de boucler $_REQUEST et de modifier toutes les variables soumises en les exécutant à travers une fonction.

Par exemple, supposons que m'a donné $_REQUEST['a'] dont la valeur était stuff et $_REQUEST['b'] dont la valeur était more stuff. Je voudrais réécrire mon tableau entier $_REQUEST[] tel que la valeur de $_REQUEST['a'] est devenue myfunction('stuff') et la valeur de $_REQUEST['b'] est devenue myfunction('more stuff'). Je ne pas connaître le nom de tous chacun des éléments transmis à $_REQUEST.

+0

Vous pouvez résoudre ce problème avec une boucle simple. – Appleshell

+0

Je ne vais pas vous aider jusqu'à ce que vous me disiez pourquoi vous voulez faire cela. Je pense que vous allez mal à ce sujet, expliquez ce que vous essayez de faire. –

Répondre

1

Vous pouvez utiliser la fonction array_walk et passer le tableau. Exemple serait:

<?php 
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); 

function test_alter(&$item1, $key, $prefix) 
{ 
    $item1 = "$prefix: $item1"; 
} 

function test_print($item2, $key) 
{ 
    echo "$key. $item2<br />\n"; 
} 

echo "Before ...:\n"; 
array_walk($fruits, 'test_print'); 

array_walk($fruits, 'test_alter', 'fruit'); 
echo "... and after:\n"; 

array_walk($fruits, 'test_print'); 
?> 

De la même façon, pour votre problème, vous pouvez le faire:

function stuff() { 
    /// 
} 

Et maintenant marcher votre $_REQUEST grâce à la fonction de cette façon:

array_walk($_REQUEST, 'stuff', 'fruit'); 
+1

+1 J'aime cette réponse. –

+1

Quand PHP a une fonction intégrée, pourquoi ne pas l'utiliser! : P –

+1

Il est difficile de garder une trace de toutes les fonctions PHP intégrées, il y en a tellement et toutes dans différentes conventions de nommage: P –

0

Première De toute façon, ce que vous faites semble être une mauvaise nouvelle car REQUEST stocke toutes sortes de choses telles que les variables $ _COOKIES, $ _POST et $ _GET et ainsi de suite, mais si vous voulez vraiment faire cela, alors vous pouvez le faire comme ceci:

foreach ($_REQUEST as $key => $val) { 
    $_REQUEST[$key] = myFunction($val); 
} 
+1

Je suis assez sûr que '$ _REQUEST' doesn Ne stockez rien comme SESSION, seulement des choses soumises par l'utilisateur comme '$ _COOKIE' et' $ _POST'. – user2178640

+1

Je suppose qu'il comprend même '$ _GET' –

+0

oui vous avez raison, je suis toujours confus par $ _REQUEST tenue des cookies au lieu de la session, il est encore très volatile, je vais corriger la réponse. –

1

Personnellement, je ne me sens pas bien modifier le tableau spécial$_REQUEST, donc je voudrais créer un autre tableau avec des valeurs modifiées - juste au cas:

$requestProcessed = array_map('myfunction', $_REQUEST); 

De cette façon, vous obtenez les valeurs modifiées et ont toujours accès aux valeurs d'origine (si vous en avez besoin).

Si vous pouvez modifier le tableau $_REQUEST lui-même, alors array_walk est préférable (comme suggéré par Praveen Kumar).

Questions connexes