2010-08-15 25 views
21

Tengo una POST en PHP para la que no siempre sabré los nombres de los campos variables que procesaré.

tengo una función que va a recorrer los valores (sin embargo yo también le gustaría capturar el nombre de la variable que va con ella.)

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

Una vez que encontrar la manera de agarrar los nombres de las variables, lo también necesito descubrir cómo puedo hacer que la función sea lo suficientemente inteligente como para detectar y recorrer las matrices de una variable si están presentes (es decir, si tengo algunos valores de casilla de verificación).

+2

esta pregunta es desde luego no localizada, porque pasé por una situación similar . – IcyFlame

Respuesta

41

Si sólo desea imprimir toda la matriz $ _POST para verificar sus datos está siendo enviado correctamente, utilice print_r:

print_r($_POST); 

Para imprimir de forma recursiva los contenidos de una matriz:

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); 
     } 
    } 
} 

Aplique un poco padd ing a matrices anidadas:

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 devuelve verdadero si la variable dada es una matriz.

También puede usar array_keys que devolverá todos los nombres de cadena.

5

Puede hacer que el bucle foreach muestre el índice junto con el valor:

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

En cuanto a la matriz de comprobación, utilice la función 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 desea detectar campos de matriz utilizan un código como el siguiente:

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

Es mucho mejor usar:

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