2011-08-17 13 views
5

Tengo la siguiente tabla.

<form method="post" action="test.php"> 
    <input name="id[]" type="text" value="ID1" /> 
    <input name="value[]" type="text" value="Value1" /> 
    <hr /> 

    <input name="id[]" type="text" value="ID2" /> 
    <input name="value[]" type="text" value="Value2" /> 
    <hr /> 

    <input name="id[]" type="text" value="ID3" /> 
    <input name="value[]" type="text" value="Value3" /> 
    <hr /> 

    <input name="id[]" type="text" value="ID4" /> 
    <input name="value[]" type="text" value="Value4" /> 
    <hr /> 

    <input type="submit" /> 
</form> 

Y prueba.php archivo

<?php 

    $myarray = array($_POST); 
    foreach ($myarray as $key => $value) 
    { 
    echo "<p>".$key."</p>"; 
    echo "<p>".$value."</p>"; 
    echo "<hr />"; 
    } 

?> 

Pero sólo se está volviendo esto: <p>0</p><p>Array</p><hr />

Lo que estoy haciendo mal?

+0

¿Hay alguna razón por la que intente juntar varios campos de texto con el mismo nombre? Además, si no le preocupa lo bonito que se ve, 'echo'

'. print_r ($ value, TRUE). "

"; 'podría ser tu amigo. – KyleWpppd

+0

@Kyle - al final esta será una GRAN tabla de las actualizaciones para actualizar el DB. – Iladarsda

+0

¿Cómo llenas la tabla? ¿No sería un archivo '* .sql' una buena elección si el texto ya existe? – KyleWpppd

Respuesta

11
<?php 

foreach ($_POST as $key => $value) { 
    echo '<p>'.$key.'</p>'; 
    foreach($value as $k => $v) 
    { 
    echo '<p>'.$k.'</p>'; 
    echo '<p>'.$v.'</p>'; 
    echo '<hr />'; 
    } 

} 

?> 

esto va a funcionar, su primera solución está tratando de imprimir matriz, debido a que su valor es una matriz.

1

Justo:

foreach ($_POST as $key => $value) { 

    echo "<p>".$key."</p>"; 
    echo "<p>".$value."</p>"; 
    echo "<hr />"; 

} 
+1

Además, puede visualice la matriz usando 'print_r ($ _ POST)' o 'var_dump ($ _ POST)'. – TJHeuvel

+1

No se puede 'echo $ value' ya que es una matriz para ambas claves' id' y 'value' – Phil

+0

@Phil bien, definitivamente puedes hacer eco de una matriz =) – Headshota

1

Está añadiendo la matriz $_POST como primer elemento a $myarray. Si desea hacer referencia a ella, acaba de hacer:

$myarray = $_POST; 

Sin embargo, esto probablemente no es necesario, ya que sólo se puede llamar a través de $_POST en el script.

0

$_POST es una matriz en sí misma que no necesita hacer una matriz de ella. Lo que hizo es anidar la matriz $_POST dentro de una nueva matriz. Es por eso que imprime Array. Cambiar a:

foreach ($_POST as $key => $value) { 

    echo "<p>".$key."</p>"; 
    echo "<p>".$value."</p>"; 
    echo "<hr />"; 

} 
0

$ _POST es ya una matriz. Pruebe esto:

foreach ($_POST as $key => $value) { 
    echo "<p>".$key."</p>"; 
    echo "<p>".$value."</p>"; 
    echo "<hr />"; 
} 
5

$ _POST ya es una matriz, por lo que no necesita envolver array() alrededor de ella.

Tal vez puedas probar:

<?php 

for ($i=0;$i<count($_POST['id']);$i++) { 

    echo "<p>".$_POST['id'][$i]."</p>"; 
    echo "<p>".$_POST['value'][$i]."</p>"; 
    echo "<hr />"; 

} 

?> 

NOTA: Esto funciona porque sus id y value matrices son simétricas. Si tuvieran diferentes números de elementos, entonces necesitarías tomar un enfoque diferente.

+0

Esto retutn '

Identificación

matriz


valor

matriz


' sólo 2 de 4. Además de que desee mostrar el valor del campo - lo que se inserta en la entrada. – Iladarsda

+0

right, lo siento, me perdí la parte en la que los parámetros de tu nombre son matrices. Voy a editar –

+1

Cuidado con este método. Está bien para las entradas de texto, pero si las entradas están mezcladas (por ejemplo, texto y casillas de verificación), los recuentos no coincidirán con las casillas de verificación no marcadas – Phil

1

¿Por qué está envolviendo la matriz $_POST en una matriz?

puede acceder a su "ID" y "valor" arrays utilizando la siguiente

// assuming the appropriate isset() checks for $_POST['id'] and $_POST['value'] 

$ids = $_POST['id']; 
$values = $_POST['value']; 

foreach ($ids as $idx => $id) { 
    // ... 
} 

foreach ($values as $idx => $value) { 
    // ... 
} 
0

Porque has anidado matrices, entonces yo realmente recomiendo un enfoque recursivo:

function recurse_into_array($in, $tabs = "") 
{ 
    foreach($in as $key => $item) 
    { 
     echo $tabs . $key . ' => '; 
     if(is_array($item)) 
     { 
      recurse_into_array($item, $tabs . "\t"); 
     } 
     else 
     { 
      echo $tabs . "\t" . $key; 
     } 
    } 
} 

recurse_into_array($_POST); 
23

El foreach bucles funcionan bien, pero también se puede simplemente

print_r($_POST); 

O para casi la impresión en una navegador:

echo "<pre>"; 
print_r($_POST); 
echo "</pre>"; 
1

Encontré este 'implode' recientemente.

Puede ser útil para generar matrices. http://in2.php.net/implode

echo 'Variables: ' . implode(', ', $_POST); 
+0

Tenga en cuenta que esto mostraría los valores, pero no las claves – billrichards

Cuestiones relacionadas