Si tengo 20 variables de entrada de usuario y quiero trabajar entre $var[0..19], $_SESSION['var'[0..19]] y $_POST['var'[0..19]], como:
$var0 = $_SESSION['var0'] = $_POST['var0'];¿Cómo podría hacer esto de manera eficiente usando matrices y bucles foreach?
Detalles adicionales:
Así que inicialmente he estado pensando en probar algo como:
$inputVars = array('var1'=>$var1, 'var2'=>$var2, 'var3'=>$var3, 'var4'=>$var4, 'var5'=>$var5) $inputVarsS = array($_SESSION['inputVars = array('svar1'=>$_SESSION['var1']'], 'svar2'=>$_SESSION['var2'], 'svar3'=>$_SESSION['var3'], 'svar4'=>$_SESSION['var4'], 'svar5'=>$_SESSION['var5']) $inputVarsP = array($_POST['inputVars = array('pvar1'=>$_POST['pvar1']'], 'pvar2'=>$_POST['pvar2'], 'pvar3'=>$_POST['pvar3'], 'pvar4'=>$_POST['pvar4'], 'pvar5'=>$_POST['pvar5'])y luego supongo que podría hacer algo como:
$inputVarsS['svar1'] = $inputVarsP['pvar1'];para establecer el valor de la sesión svar1 en el valor publicado pvar1. Pero estoy pensando que realmente debe haber una forma más eficiente de hacer este tipo de tareas.
Creo que podría tener fácilmente la matriz $ inputVars y asignar valores POST SESSION a las claves, pero ¿qué pasa si quiero tener valores POST y SESSION disponibles simultáneamente? Entonces supongo que necesito varias matrices.
Puede usar $$ para definir un nombre de variable, pero creo que es mejor usar una matriz $vars.
Con $var0, $var1, ...., y puedes acceder a ellos como echo $var4
foreach(range(0, 19) as $index) { $var = 'var' . $index; $$var = $_SESSION[$var] = $_POST[$var]; } Con array $vars, y acceda a ellos con echo $vars[4]
foreach(range(0, 19) as $index) { $var = 'var' . $index; $vars[$var] = $_SESSION[$var] = $_POST[$var]; }Su pregunta carece de información, por lo que mi respuesta puede ser incorrecta.
Puede copiar una matriz completa como esta:
$_SESSION['post'] = $_POST;Luego, cuando desee extraer variables de eso, puede usar:
extract($_SESSION['post']); Entonces, si $_POST['var0'] existe, extraerá $var0 .
Sin embargo, NUNCA debe poner los datos publicados en el ámbito global. Los piratas informáticos pueden usar esto para inyectar sus variables en su código. Siempre filtre la entrada primero. Un poco mejor es esto:
extract($_SESSION['post'],EXTR_PREFIX_ALL,'post'); Entonces será $post_var0 en lugar de $var0 . Pero aún así, asegúrese de obtener solo las variables que desea y filtre sus valores.