Foros del Web » Programando para Internet » PHP »

foreach y conversión de un array a string...

Estas en el tema de foreach y conversión de un array a string... en el foro de PHP en Foros del Web. Buenas noches, Tengo un problema con un array, llevo rato ya dándole vueltas y después de tanto buscar google y especialmente en el foro; no ...
  #1 (permalink)  
Antiguo 23/11/2011, 00:10
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Pregunta foreach y conversión de un array a string...

Buenas noches,

Tengo un problema con un array, llevo rato ya dándole vueltas y después de tanto buscar google y especialmente en el foro; no encontré solución.

Resulta que tengo un array, y deseo insertarlo junto a otros campos en una tabla; dicho array contiene datos de tipo string. Por medio del constructor foreach, itero con el array hasta llegar a la sección que deseo manipular. A continuación, les coloco el fragmento de código:

Código PHP:
        foreach ($_SESSION['carrito'] as $key => $value) {
            foreach (
$value as $key => $value) {
                switch (
$key) {
                    case 
'id':
                        echo 
$value;
                        break;
                }
            }
        } 
Hasta ahí todo bien, pruebo luego de la comparación (case) mostrar en pantalla el dato de la variable $value y me arroja los datos que necesito. El problema se presenta al ver que cada dato está separado; es decir, cada elemento que contiene (muestra) la variable $value va por separada.

Intento realizar un implode(), pero me da un error. Aparentemente, el error se debe a que $value no es un array. Paso un var_dump y muestra lo siguiente:

Código:
string '3' (length=1)
string '4' (length=1)
string '5' (length=1)
Y por último, al intertar realizar el registro en la tabla... se realiza satisfactoriamente, pero crea tantos registros como elementos contenga la variable $value.

Mi duda es, que me falta para que dicha variable contenga todos los datos separadas por una coma (,) y así poder realizar un solo registro.

Gracias de antemano.
  #2 (permalink)  
Antiguo 23/11/2011, 05:20
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: foreach y conversión de un array a string...

El implode espera un array, no funciona sobre algo que no se un vector, es decir que el implode no funciona sobre string porque lo que hace es recorrer el vector y concatenarlo con un caracter que vos desees.

Lo que podes hacer en tu caso son 2 cosas:

1. Vas acumulando en un array los valores luego del case. Ejemplo:

Código PHP:
Ver original
  1. foreach ($_SESSION['carrito'] as $key => $value) {
  2.     foreach ($value as $key => $value) {
  3.         switch ($key) {
  4.             case 'id':
  5.                 $ids[] = $value;
  6.                 break;
  7.         }
  8.     }
  9. }
  10. echo implode(',', $ids);

O bien podes acumular en una variable todos los strings separados por coma. Algo asi:

Código PHP:
Ver original
  1. $var = "";
  2. foreach ($_SESSION['carrito'] as $key => $value) {
  3.     foreach ($value as $key => $value) {
  4.         switch ($key) {
  5.             case 'id':
  6.                 if (strlen($var) == 0) {
  7.                     $var = $value;
  8.                 } else {
  9.                     $var .= "," . $value;
  10.                 }
  11.                 break;
  12.         }
  13.     }
  14. }
  15. echo $var;

Saludos!
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 23/11/2011, 10:44
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: foreach y conversión de un array a string...

Muchísimas gracias por la ayuda.
  #4 (permalink)  
Antiguo 23/11/2011, 11:57
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: foreach y conversión de un array a string...

De nada campeón, cualquier cosa avisame ;)
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Etiquetas: arrays, foreach, php+bd+mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:12.