Estoy usando una variable $ _SESSION para almacenar códigos de error en una aplicación que estoy creando. En mi página de procesamiento de formularios, estoy usando el siguiente código (como ejemplo):
session_start();
$_SESSION['site_msg'] = array();
if(1 == 1) {
$_SESSION['site_msg'] = 18;
}
if(2 == 2) {
$_SESSION['site_msg'] = 21;
}
if(3 == 3) {
$_SESSION['site_msg'] = 20;
}
Espero usar una función para obtener los valores de la matriz para usar en otra parte de mi código.
function error_code() {
foreach($_SESSION['site_msg'] as $value) {
echo "Value: $value <br />";
}
}
Lo anterior da un error; Advertencia: argumento no válido proporcionado para foreach () ...
Si escribo la función así:
$array[] = $_SESSION['site_msg'];
foreach($array as $value) {
echo "VAL: " . $value;
}
Solo me da el último valor, 20.
¿Alguien tiene una idea de dónde me equivoqué? ¡Gracias!
2 respuestas
<?php
session_start();
$_SESSION['site_msg'] = array();
if(1 == 1) {
array_push($_SESSION['site_msg'],18); // '=' overwrites the data, so push data in session array not to assign
}
if(2 == 2) {
array_push($_SESSION['site_msg'],21);
}
if(3 == 3) {
array_push($_SESSION['site_msg'],20);
}
$array = $_SESSION['site_msg']; //remove [] from variable, its not needed
foreach($array as $value) {
echo "VAL: " . $value;
}
?>
¡Declaras tu variable $_SESSION['site_msg']
como una matriz, pero pasas valores enteros a esta variable! Debe agregar sus valores como nuevos elementos de matriz.
Esto debería funcionar:
session_start();
$_SESSION['site_msg'] = array();
if(1 == 1) {
$_SESSION['site_msg'][] = 18;
}
if(2 == 2) {
$_SESSION['site_msg'][] = 21;
}
if(3 == 3) {
$_SESSION['site_msg'][] = 20;
}
Como alternativa, puede usar la función array_push()
para agregar sus valores a la matriz:
session_start();
$_SESSION['site_msg'] = array();
if(1 == 1) {
array_push($_SESSION['site_msg'], 18);
}
if(2 == 2) {
array_push($_SESSION['site_msg'], 21);
}
if(3 == 3) {
array_push($_SESSION['site_msg'], 20);
}
Nuevas preguntas
php
PHP es un lenguaje de secuencias de comandos interpretado, dinámico, orientado a objetos y ampliamente utilizado, diseñado principalmente para el desarrollo web del lado del servidor. Se utiliza para preguntas sobre el lenguaje PHP.