2010-08-15 8 views
21

J'ai un POST en PHP pour lequel je ne connaîtrai pas toujours les noms des champs variables que je vais traiter.

J'ai une fonction qui boucle à travers les valeurs (mais je voudrais aussi saisir le nom de la variable qui va avec.)

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

Une fois que je figure sur la façon de saisir les noms de variables, je aussi besoin de comprendre comment je peux rendre la fonction assez intelligente pour détecter et faire une boucle sur les tableaux pour une variable s'ils sont présents (ie si j'ai des valeurs de case à cocher.)

+2

Cette question est certainement pas localisée, parce que je suis passé par une situation similaire . – IcyFlame

Répondre

41

Si vous voulez juste imprimer le tableau entier de $ _POST pour vérifier vos données sont envoyées correctement, utilisez print_r:

print_r($_POST); 

Pour imprimer récursive 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); 
     } 
    } 
} 

Appliquer une padd ING 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 true si la variable donnée est un tableau.

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

5

Vous pouvez avoir la boucle foreach avec l'index avec la valeur:

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

En ce qui concerne le tableau de contrôle, 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>"; 
    } 
} 
0

Si vous voulez détecter les champs de tableau utilisent un code comme ceci:

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

Il est préférable d'utiliser:

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