Foros del Web » Programando para Internet » PHP »

Dividir Cadena para un Arreglo

Estas en el tema de Dividir Cadena para un Arreglo en el foro de PHP en Foros del Web. Saludos. Estoy armando un arreglo con un ID de una consulta de la siguiente manera: Código PHP:    while( $fila  =  mysql_fetch_array ( $ejecutar_arreglo )) { ...
  #1 (permalink)  
Antiguo 14/01/2005, 07:49
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
Dividir Cadena para un Arreglo

Saludos.

Estoy armando un arreglo con un ID de una consulta de la siguiente manera:

Código PHP:
  while($fila mysql_fetch_array($ejecutar_arreglo)) {
     
$ID_ARREGLO[] = $fila['id_respuesta'];
   } 
Ahora, ocurre que algunas de esas id_respuesta tienen esto: 12~15~6

Cuando listo el arreglo me imprime:

4
5
12~15~6
45
12

Cómo pudiera hacer para que en esos casos que tiene el caracter "~" lo divida en 3 valores distintos y los pueda ingresar al arreglo $ID_ARREGLO directamente.???

Intente algo así:

Código PHP:
  $NA substr_count($fila['id_respuesta'],"~");
   if (
$NA>"0") {
    
$Id_Arreglo explode("~"" ",$fila['id_respuesta']);
   }else{
    
$Id_Arreglo $fila['id_respuesta'];
   } 
Pero no me lo guarda correctamente, cuando lo listo me muestra:

4
5
Array
45
12

En definitiva debería mostrame:

4
5
12
15
6
45
12

Cómo lo soluciono??

Gracias
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #2 (permalink)  
Antiguo 14/01/2005, 08:16
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Cuando haces $Id_Arreglo = explode("~", " ",$fila['id_respuesta']); deverias hacer un foreach (eso te creo el vector $id_Arreglo) sobre $Id_Arreglo, y hacer lo mismo que haces en el while.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 14/01/2005, 08:54
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
Bien, agrege lo siguiente:

Código PHP:
 while($fila mysql_fetch_array($ejecutar_arreglo)) {
   
$NA substr_count($fila['id_respuesta'],"~");
       if (
$NA>"0") {
         
$Id_Arreglo explode("~"" ",$fila['id_respuesta']);
              foreach (
$Id_Arreglo as $value) {
                 
$Id_Arreglo $value;
              }
      }else{
         
$Id_Arreglo $fila['id_respuesta'];
      } 
 
    
$ID_ARREGLO[] = $fila['id_respuesta'];
 } 
Pero la verdad ahora no muestra esos valores:

4
5

45
12

Es decir, deja un espacio en blanco.

Evidentemente lo estoy haciendo mal.
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #4 (permalink)  
Antiguo 14/01/2005, 09:11
Avatar de dmedina83  
Fecha de Ingreso: mayo-2004
Ubicación: Mérida
Mensajes: 96
Antigüedad: 13 años, 6 meses
Puntos: 0
Intenta poniendo:

Código PHP:
foreach ($Id_Arreglo as $value) {
     
$ID_ARREGLO[]  = $value;

__________________
WebAdictos - Una dosis diaria de web
  #5 (permalink)  
Antiguo 14/01/2005, 09:13
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
Me arroja el mismo resultado de:

4
5
Array
45
12
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #6 (permalink)  
Antiguo 14/01/2005, 09:50
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
No es muy logico que te cargue eso, ya que supuestamente esta bien.
Hacete un print_r($vector) para ver que te carga la asignacion de $value y ver que te devuelve.

PD, por las dudas, te quedo asi no?

Código PHP:
<?php
while($fila mysql_fetch_array($ejecutar_arreglo)) {
   
$NA substr_count($fila['id_respuesta'],"~");
       if (
$NA>"0") {
         
$Id_Arreglo explode("~"" ",$fila['id_respuesta']);
             foreach (
$Id_Arreglo as $value) {
                
$ID_ARREGLO[] = $value;
             }
      }else{
         
$ID_ARREGLO[] = $fila['id_respuesta'];
      } 

    
$ID_ARREGLO[] = $fila['id_respuesta'];
?>
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #7 (permalink)  
Antiguo 14/01/2005, 10:03
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
No, yo lo tenía distinto.

Estaba armando el ID_ARREGLO con los otros valores. Tu lo estas armando directo. En tu caso no hay que colocar el último $ID_ARREGLO[] = $fila['id_respuesta']; ya que no tendría sentido aplicar el IF.

Finalmente siguiendo tu idea quedaría:

Código PHP:
  while($fila mysql_fetch_array($ejecutar_arreglo)) {
     
$NA substr_count($fila['id_respuesta'],"~");
     if (
$NA>"0") {
         
$Id_Arreglo explode("~"" ",$fila['id_respuesta']);
         foreach (
$Id_Arreglo as $value) {
            
$ID_ARREGLO[] = $value;
         }
     }else{
         
$ID_ARREGLO[] = $fila['id_respuesta'];
     }
  } 
Pero lo que imprime es:

4
5
//Aquí es donde deberían estar los otros valores
45
12
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #8 (permalink)  
Antiguo 14/01/2005, 10:19
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
Señores, ya consegui el error:

Esta en la función EXPLODE

$Id_Arreglo = explode("~", " ",$fila['id_respuesta']);

Es en realidad:

$Id_Arreglo = explode("~", $fila['id_respuesta']);

Gracias a todos
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #9 (permalink)  
Antiguo 14/01/2005, 10:25
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Lo mismo acabo de ver...no entiendo como se me paso eso :(
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #10 (permalink)  
Antiguo 14/01/2005, 10:29
Avatar de dmedina83  
Fecha de Ingreso: mayo-2004
Ubicación: Mérida
Mensajes: 96
Antigüedad: 13 años, 6 meses
Puntos: 0
orale se nos escapo eso a todos.

pero que bueno que al fin solucionaste tu problema

Nos vemos
__________________
WebAdictos - Una dosis diaria de web
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 22:44.