Html / PHP – Formulario – Ingresar como matriz

Tengo un formulario como este

Lo que me gustaría tener como salida $ _POST es una matriz como

 Array ( [1] => Array ( [level] => 1 [build_time] => 123 ) [2] => Array ( [level] => 2 [build_time] => 456 ) ) 

Sé que podría hacer algo como name = “levels [1] [build_time]” y así sucesivamente, pero dado que estos elementos se agregan dinámicamente, sería difícil agregar un índice. ¿Hay alguna otra manera?

EDITAR:

Como se sugirió, cambié mi formulario. También incluí todo mi HTML ahora, porque creo que me falta algo aquí. Mi HTML ahora:

 

El resultado que obtengo ahora es:

 [levels] => Array ( [0] => Array ( [level] => 1 ) [1] => Array ( [build_time] => 234 ) [2] => Array ( [level] => 2 ) [3] => Array ( [build_time] => 456 ) ) 

Editar 2:

Como sugerí en su edición, edité mi formulario y moví los corchetes al final del nombre. El resultado que obtengo ahora es:

 [levels] => Array ( [level] => Array ( [0] => 1 [1] => 2 ) [build_time] => Array ( [0] => 234 [1] => 456 ) ) 

Supongo que funcionaría un poco, pero parece complicado. ¿No hay mejor manera?

Simplemente agregue [] a esos nombres como

    

Toma esa plantilla y luego puedes agregarla incluso usando un bucle.

Luego puede agregarlos dinámicamente tanto como desee, sin tener que proporcionar un índice. PHP los recogerá como su ejemplo de escenario esperado.

Editar

Lamento tener frenos en el lugar equivocado, lo que haría que cada nuevo valor sea un nuevo elemento de matriz. Utilice el código actualizado ahora y esto le dará la siguiente estructura de matriz

 levels > level (Array) levels > build_time (Array) 

El mismo índice en ambos subordenadores le dará su par. Por ejemplo

 echo $levels["level"][5]; echo $levels["build_time"][5]; 

Si está bien que indexe la matriz, puede hacer esto:

 

… para lograr eso:

 [levels] => Array ( [0] => Array ( [level] => 1 [build_time] => 2 ) [1] => Array ( [level] => 234 [build_time] => 456 ) [2] => Array ( [level] => 111 [build_time] => 222 ) ) 

Pero si eliminas un par de entradas (dinámicamente, supongo) del centro del formulario, obtendrás agujeros en tu matriz, a menos que actualices los nombres de las entradas …

HTML: use nombres como

   

PHP:

 $array = filter_input_array(INPUT_POST); $newArray = array(); foreach (array_keys($array) as $fieldKey) { foreach ($array[$fieldKey] as $key=>$value) { $newArray[$key][$fieldKey] = $value; } } 

$ newArray guardará los datos como quieras

 Array ( [0] => Array ( [level] => 1 [build_time] => 123 ) [1] => Array ( [level] => 2 [build_time] => 456 ) ) 

Además: para aquellos que tienen una variable POST vacía, no use esto:

 name="[levels][level][]" 

más bien use esto (como ya está aquí en este ejemplo):

 name="levels[level][]"