Foros del Web » Programando para Internet » PHP »

Un problema super extraño

Estas en el tema de Un problema super extraño en el foro de PHP en Foros del Web. Saludos amigos. Quisiera a clarar un a duda sobre algo que, aunque no es un problema en sí, me tiene algo inquieto, pues no se ...
  #1 (permalink)  
Antiguo 24/11/2011, 14:55
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 13 años, 3 meses
Puntos: 37
Pregunta Un problema super extraño

Saludos amigos. Quisiera a clarar un a duda sobre algo que, aunque no es un problema en sí, me tiene algo inquieto, pues no se por qué ocurre?

En un proyecto que estoy remodelando (ya estaba hecho, yo solamente estoy arreglando algunas cosas) viene este fragmento de código:

Código PHP:
Ver original
  1. if (is_array($vars)) {
  2.             foreach ($vars as $key => $value) {
  3.                 $$key=$value;
  4.             }
  5.         }

Fíjense en el doble $$ de la variable key dentro del foreach. Bueno, pensando yo que eso era un error del código, se me ocurrió quitar el $ sobrante, así:

Código PHP:
Ver original
  1. if (is_array($vars)) {
  2.             foreach ($vars as $key => $value) {
  3.                 $key=$value;
  4.             }
  5.         }

Y PAFF!, se me queda la página sin estilo, todo plano, como si no cargara el CSS.

Que relación puede haber entre una cosa y otra? No entiendo por qué puede pasar eso. Saludos.
  #2 (permalink)  
Antiguo 24/11/2011, 15:05
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 13 años, 1 mes
Puntos: 140
Respuesta: Un problema super extraño

No debía ser un error, dos $$ es para variables variables...
http://php.net/manual/es/language.va...s.variable.php

Ahora la relación con los estilos no la veo...
  #3 (permalink)  
Antiguo 24/11/2011, 15:08
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 13 años, 2 meses
Puntos: 48
Respuesta: Un problema super extraño

raro, raro. :P.
puede que despues se use denuevo al cargar los estilos algo asi como:
if($key==$value){
//cargar estilos
}
-------------------
ademas fijate lo que estas haciendo con el codigo(el primero):
estas asignando a la variable de nombre $value el valor $value.....algo como esto:
$perro = 'perro'
$gato = 'gato'

---------------
:O parece que me di cuenta de un posible error :P .... lo que pasa es que php no permite usar variables que empiecen con un numero y lo mas probable es que tu array sea de tipo numerico y no asociativo ....haci que estarias diciendo algo asi como $1='XXXXXXX'; y eso no esta permitido(eso creo).
....tengo pasaje ahora llego a mi casa y compruebo si esta acertado lo que te mencione
  #4 (permalink)  
Antiguo 24/11/2011, 15:16
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 13 años, 3 meses
Puntos: 37
Respuesta: Un problema super extraño

Cita:
Iniciado por Rodrhigo Ver Mensaje
ademas fijate lo que estas haciendo con el codigo(el primero):
estas asignando a la variable de nombre $value el valor $value.....algo como esto:
$perro = 'perro'
$gato = 'gato'
Si, tienes razón hermano. Esa es otra cosa algo rara del código. No sé, ese código está super extraño. Lo más curioso es que así funciona perfecto, mientras no lo toque. Pero si después me hace falta tocarlo?

Normalmente no tendría que tocar esa parte para nada, pero el código está tan enmarañado, que cuando uno empieza a desenredar la madeja no sabe por donde va a terminar.

Gracias y Saludos.
  #5 (permalink)  
Antiguo 24/11/2011, 15:26
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 16 años, 3 meses
Puntos: 87
Respuesta: Un problema super extraño

No es ningún erro de código, son variables variables como dijo charlyalegret.

Digamos que tenemos este array:

Código PHP:
Ver original
  1. $vars = array(
  2.          'color' => 'azul',
  3.          'alto' => '50px',
  4.          'ancho' => '100px',
  5.         );

Entonces con esto:

Código PHP:
Ver original
  1. if (is_array($vars)) {
  2.             foreach ($vars as $key => $value) {
  3.                 $$key=$value;
  4.             }
  5.         }

Lo que hacemos es crear variables con el nombre del indice y que contienen el valor del mismo:

Código PHP:
Ver original
  1. $color = 'azul';
  2. $alto = '50px';
  3. $ancho = '100px';

Y por eso al quitarle un $ tu código deja de funcionar.

Saludos.
  #6 (permalink)  
Antiguo 24/11/2011, 15:26
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Un problema super extraño

No hay nada extraño en absoluto. ¿Qué contiene tu array $vars? Probablemente tenga algún índice usado por tu script respecto a los estilos. Lo que hace tu pequeño código es pasar el índice a una variable. Mira éste ejemplo para que te des una idea:
Código PHP:
Ver original
  1. echo $nombre; // Ambas estan indefinidas, daria error
  2. echo $altura;
  3.  
  4. $vars = array('nombre' => 'Juan', 'altura' => '1.6m');
  5.  
  6. foreach($vars as $index => $value) {
  7.     $$index = $value;
  8. }
  9.  
  10. echo $nombre;
  11. echo $altura;
  12. // Ambas se imprimen, pues en tu codigo los indices se transformaron a variables

Ahora, puede ser que $vars tenga links hacia el CSS o algo parecido. Debes hacerle un print_r para poder ver lo que contiene y despejes tu duda

Saludos!


Edit: quike88 se me adelantó
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #7 (permalink)  
Antiguo 24/11/2011, 15:42
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 13 años, 3 meses
Puntos: 37
Respuesta: Un problema super extraño

Cita:
Iniciado por quike88 Ver Mensaje
Digamos que tenemos este array:

Código PHP:
Ver original
  1. $vars = array(
  2.          'color' => 'azul',
  3.          'alto' => '50px',
  4.          'ancho' => '100px',
  5.         );

Entonces con esto:

Código PHP:
Ver original
  1. if (is_array($vars)) {
  2.             foreach ($vars as $key => $value) {
  3.                 $$key=$value;
  4.             }
  5.         }

Lo que hacemos es crear variables con el nombre del indice y que contienen el valor del mismo:
Saludos hermano, tienes 1000000000000 puntos. Esa es la raíz de un problema que ya me tenía seco. Lo que pasa es que yo llegué a ese fragmento de código rastreando el origen de un error que no he logrado localizar, pero este dato que me das lo aclara todo. Te voy a anotar un punto. No te anoto más porque el foro no me deja. Muchas gracias.
  #8 (permalink)  
Antiguo 24/11/2011, 16:09
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 13 años, 3 meses
Puntos: 37
Respuesta: Un problema super extraño

Efectivamente amigos. Hice un despliegue del array $vars y contiene, entre otras cosas, las rutas de los CSS. Muchas gracias a todos.

Etiquetas: extraño, super, variables
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 11:44.