Foros del Web » Programando para Internet » PHP »

Problema con Función

Estas en el tema de Problema con Función en el foro de PHP en Foros del Web. Código PHP: function  lector ( $db ) { //nombre|apellidos|telefono^miguel¬gonzalez¬2521251~miguel2¬gonzalez2¬252125111111~ $file_read = file_get_contents ( "$dbdb" ); $token_campos = explode ( "^" , $file_read ); $token_campos_end = ...
  #1 (permalink)  
Antiguo 09/10/2011, 17:20
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 16 años, 4 meses
Puntos: 20
Exclamación Problema con Función

Código PHP:

function lector($db)
{

//nombre|apellidos|telefono^miguel¬gonzalez¬2521251~miguel2¬gonzalez2¬252125111111~
$file_read=file_get_contents("$dbdb");

$token_campos=explode("^",$file_read);
$token_campos_end=explode("|",$token_campos[0]);





for (
$i=0;$i<count($token_campos_end);$i++)
{}

$explode_values=explode("~",$file_read);

for (
$x=1;$x<count($explode_values);$x++)
{
//print "".$explode_values[$x]."";

$explode_sub_values=explode("¬",$explode_values[$x]);


for(
$h=0;$h<count($explode_sub_values);$h++)
{
//print "".$explode_sub_values[$h]."<br>";

${$token_campos_end[$h]}[]=$explode_sub_values[$h];



}



}







Tengo esta función y necesito sacar los valores que marca esta igualdad dentro de la función :

Cita:
${$token_campos_end[$h]}[]=$explode_sub_values[$h];
Como podeis ver es una igualdad que recoge en un array cada campo que inserto en un sistema de db que he creado yo mismo tipo nosql , pero sin serlo ,más parecido a un flat file , el caso es que desde la función no se como sacar los valores de esa igualdad para simplemente obtenerlos directamente , me dice error en [] al utilizar global , creo que no puedo usarlo , a aver q me podeís indicar





Muchas graciasss !
  #2 (permalink)  
Antiguo 09/10/2011, 18:10
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema con Función

Tienes varios errores por ejemplo:

Código PHP:
Ver original
  1. //Este for sobra
  2. for ($i=0;$i<count($token_campos_end);$i++)
  3. {}

Código PHP:
Ver original
  1. $explode_values=explode("~",$file_read);
  2. //Debería ser
  3. $explode_values = explode("~", $token_campos[1]);

Otra cosa estás usando mal los bucle for, en cada vuelta tienen que calcular el total de elementos, es preferible que los calcules en otra variable o por fuera.

Para agregar esa información a un array haces esto:

Código PHP:
Ver original
  1. $arr[$token_campos_end[$h]][] = $explode_sub_values[$h];

Un mini ejemplo, aclaro que puede que tenga errores:

Código PHP:
Ver original
  1. function lector() {
  2.     $arr = array();
  3.    
  4.     $str = 'nombre|apellidos|telefono^miguel¬gonzalez¬2521251~miguel2¬gonzalez2¬252125111111';
  5.     $file_read = $str;
  6.    
  7.     $token_campos = explode("^", $file_read);
  8.     $token_campos_end = explode("|", $token_campos[0]);
  9.     $explode_values = explode("~", $token_campos[1]);
  10.     $total_values = count($explode_values);
  11.    
  12.     for ($x = 0; $x < $total_values; $x++) {
  13.         $explode_sub_values = explode("¬", $explode_values[$x]);
  14.         $total_sub_values = count($explode_sub_values);
  15.        
  16.         for ($h = 0; $h < $total_sub_values; $h++) {
  17.             $arr[$token_campos_end[$h]][] = $explode_sub_values[$h];
  18.         }
  19.    
  20.     }
  21. }

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 10/10/2011, 06:30
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 16 años, 4 meses
Puntos: 20
Exclamación Respuesta: Problema con Función

Gracias por tu ayuda pero sigo sin obtener los valores el script lo hice y funciona si lo hago correr sin ser función de forma que puedo obtener los valores en tipo fila columna es decir puedo poner $nombre[0] ..... etc para cada campo y obtengo los valores , de esta forma estoy creando una estrucutura parecida a la de mysql que luego voy a complejizar más , pero no obtengo los valores desde la función

Código PHP:

    <?
    lector
();
    print 
"".$nombre[0]."";
    
?>

A ver si me puedes echar una mano , y te agradezco tu colaboración reordenando la función , muchas gracias


Saludos
  #4 (permalink)  
Antiguo 10/10/2011, 08:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con Función

Aquí hay un problema grave: la función lector() no devuelve nada.

Si dentro de dicha función se crean variables ahí se quedan, pues no hay nada que las "expulse" al contexto exterior de la función.

Creo que deberías leer algo del manual sobre como escribir funciones personalizadas, se nota que hay bastantes lagunas al respecto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 10/10/2011, 09:39
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Problema con Función

El problema que tengo es qeu por ejemplo si tengo un valor por ejemplo qeu se genera del tipo $valor="".$resultado."";

Como saco este valor de fuera de la función , se puede utilizar global si pero no va en este caso , esa es mi única duda el resto es un ejemplo para poder concretar un poco las cosas aquí , pero es importante el dato ese de la igualdad que se me escapa la verdad

Saludos y Gracias
  #6 (permalink)  
Antiguo 10/10/2011, 09:41
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Problema con Función

RETURN
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #7 (permalink)  
Antiguo 10/10/2011, 10:05
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Problema con Función

Cuando pongo :

Cita:
return ${$token_campos_end[$h]}[]=$explode_sub_values[$h];

Sigue sin devolverme nada , lo que la funcion esta hace es crear en este punto qeu describo lo mismo a esto : $nombre=miguel , $direccion=calle florez , $telefono =1234567

Al no ponerlo como función y siguiendo la estrucutura dada de db , yo puedo poner $nombre[0] y me dará el valor para la característica nombre del primer dato y asi consecutivamente par atodos los demas valores , el script funciona pero no cuando lo convierto en función y el problema esta en esa igualdad que se genera para que tenga la estructura de dato = valor

El problema es que no se como llamarlo y return no me devuelve nada , ese es el gran problema y no se como solucionarlo , muchas gracias y un saludo a ver sime podeís echar una mano

Saludos
  #8 (permalink)  
Antiguo 10/10/2011, 10:18
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con Función

Deberías de poner algo de tu parte y leer la documentación, es claro que no entiendes para lo que sirven las funciones, menos como usarlas.

Las funciones no pueden devolver mas de un valor, por lo cual no aplica lo que tienes en mente.

Pero si puedes devolver un array, justo como lo deseas:
Código PHP:
function lista()
{
  
$out = array();

  
$out['nombre'] []= 'foo';
  
$out['telefono'] []= '123';

  return 
$out;
}

$datos lista();
echo 
$datos['nombre'][0]; 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: basico, bucles, leer-manual, retornar-valores, sql
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 19:08.