web-dev-qa-db-fra.com

Affiche le nom de la variable $ _POST avec sa valeur

J'ai un POST in PHP pour lequel je ne connais pas toujours les noms des champs variables que je traiterai).

J'ai une fonction qui parcourra les valeurs (mais je voudrais également capturer le nom de variable qui va avec.)

foreach ($_POST as $entry)
{
     print $entry . "<br>";
}

Une fois que j'ai compris comment récupérer les noms de variable, j'ai également besoin de comprendre comment je peux rendre la fonction suffisamment intelligente pour détecter et parcourir les tableaux d'une variable s'ils sont présents (c'est-à-dire si j'ai des valeurs de case à cocher).

21
Joseph U.

Si vous souhaitez simplement imprimer l'intégralité du tableau $ _POST pour vérifier que vos données sont envoyées correctement, utilisez print_r :

print_r($_POST);

Pour imprimer récursivement le contenu d'un tableau:

printArray($_POST);

function printArray($array){
     foreach ($array as $key => $value){
        echo "$key => $value";
        if(is_array($value)){ //If $value is an array, print it as well!
            printArray($value);
        }  
    } 
}

Appliquez un peu de remplissage aux tableaux imbriqués:

printArray($_POST);

/*
 * $pad='' gives $pad a default value, meaning we don't have 
 * to pass printArray a value for it if we don't want to if we're
 * happy with the given default value (no padding)
 */
function printArray($array, $pad=''){
     foreach ($array as $key => $value){
        echo $pad . "$key => $value";
        if(is_array($value)){
            printArray($value, $pad.' ');
        }  
    } 
}

is_array renvoie vrai si la variable donnée est un tableau.

Vous pouvez également utiliser array_keys qui renverra tous les noms de chaîne.

41
Michael Robinson

Vous pouvez demander à la boucle foreach d'afficher l'index avec la valeur:

foreach ($_POST as $key => $entry)
{
     print $key . ": " . $entry . "<br>";
}

Quant à la vérification du tableau, utilisez la fonction is_array () :

foreach ($_POST as $key => $entry)
{
     if (is_array($entry)) {
        foreach($entry as $value) {
           print $key . ": " . $value . "<br>";
        }
     } else {
        print $key . ": " . $entry . "<br>";
     }
}
5
Jeffrey Blake

Il vaut mieux utiliser:

if (${'_'.$_SERVER['REQUEST_METHOD']}) {
    $kv = array();
    foreach (${'_'.$_SERVER['REQUEST_METHOD']} as $key => $value) {
        $kv[] = "$key=$value";
    }
}
1
ascci

Si vous souhaitez détecter des champs de tableau, utilisez un code comme celui-ci:

foreach ($_POST as $key => $entry)
{
    if (is_array($entry)){
        print $key . ": " . implode(',',$entry) . "<br>";
    }
    else {
        print $key . ": " . $entry . "<br>";
    }
}
0
silvo