Cómo almacenar elementos de matriz en diferentes variables en php

Tengo una lista desplegable selecta de idiomas y estoy interesado en poner cada elemento de la matriz en una variable diferente. Para que entiendas mi pregunta, pondré aquí un código:

      var expanded = false; function showCheckboxes() { var checkboxes = document.getElementById("checkboxes"); if (!expanded) { checkboxes.style.display = "block"; expanded = true; } else { checkboxes.style.display = "none"; expanded = false; } }    Languages  
Choose language:

Si estoy marcando todas las casillas de verificación, no hay problema, pero si estoy verificando menos de 5, recibiré este mensaje:

 Notice: Undefined offset: 

Esto es debido al tamaño de la matriz. ¿Cómo puedo evitar esto y repetir las variables si hay menos de 5 idiomas marcados?

Puedes usar $$ para definir una variable. revisa la demostración en vivo

Tenga en cuenta que puede acceder a todas las variables fuera del scope de foreach.

 foreach($languages as $k => $v) { $name = 'language' . ($k + 1); $$name = $v; } print_r($language1); 

Use loop El más simple sería foreach.

  

dado que $ _POST [‘languages’] es una matriz, puede recorrer todos sus elementos. No importa cuántos hay allí. Incluso no tiene que comprobar si hay elementos en absoluto, si no hay ninguno, se omitirá foreach.

Debería recorrer los idiomas y crear una variable variable.

 for($i = 0, $cnt = count($languages); $i < $cnt; $i++) { $name = sprintf("language%d",$i+1); ${$name} = $languages[$i]; } 

Creará $ language1, $ language2, .., pero creará tantos como la cantidad de elementos en la matriz (por lo que creará solo 3 si se marcó 3)

Prueba esto..

  if (isset($_POST['submit'])) { if(count($_POST['languages'])>0){ foreach($_POST['languages'] as $key=>$val){ echo $val; } } } 

Utilizando el consejo de las respuestas anteriores, agregaría la idea de usar “variables variables” para permitirle nombrar las variables individuales de la matriz $ _POST a medida que entren. Para obtener más información sobre esta técnica, lea la documentación de PHP. , tenga en cuenta que existe un riesgo de ataque de inyección con esta técnica, por lo que debe tener una forma de verificar que los elementos de $ _POST sean lo que está esperando.

puedes probar esto, el bucle foreach es una mejor manera de mostrar / procesar matrices

 if(!empty($_POST['languages']){ $languages = $_POST['languages']; foreach($languages as $lang){ echo $lang; } } 

La forma correcta de hacerlo es usar la función extract . Primero, debe almacenar en una matriz donde las keys serán el name of variable y los values serán los values of variable .

Pruebe este fragmento de código aquí

  $language) { $array["language".($key+1)]=$language; } extract($array); echo $language1; echo $language2;