Foros del Web » Programando para Internet » PHP »

Un mismo valor a muchas variables. ¿Como?

Estas en el tema de Un mismo valor a muchas variables. ¿Como? en el foro de PHP en Foros del Web. Quiero que un grupo de variables tenga el valor: $a = ''; $b = ''; $c = ''; $d = ''; $e = ''; $f ...
  #1 (permalink)  
Antiguo 02/05/2004, 14:22
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.942
Antigüedad: 13 años, 9 meses
Puntos: 20
Un mismo valor a muchas variables. ¿Como?

Quiero que un grupo de variables tenga el valor:

$a = '';
$b = '';
$c = '';
$d = '';
$e = '';
$f = '';
$g = '';
$t = '';
$j = '';
$o = '';
$p = '';

Puedo hacer eso de otra forma?, algo como:

lasvars ($a,$B,$c,$d,$e) = '';

--------------------------------

O bien algo como:

if(empty(un gran numero de variables))
{la variable no declarada = '';}


Gracias.
  #2 (permalink)  
Antiguo 02/05/2004, 16:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Puedes usar arrays, bucles y si es necesario "variables variables" para hacer ese tipo de aplicaciones de funciones (própias o de PHP) para (por ejemplo) validar ese grupo de variables ..

En el Array tendrías tus nombres de tus variables .. y con el bucle (foreach() te servirá) las recorres. Aplicando "varaibles variables" pones el nombre de la variable "dinámicamente" para aplicar tu condiconal o código a aplicar.

Ejemplo .. algo asi:

Código PHP:
$a="bla";
// $b="nose"; // No declarada.
$c=1;

$variables=array('a','b','c');
foreach (
$variables as $variable){
   
// ${$variable} eso seria "variables variables"
   
if (empty(${$variable})){
     echo ${
$variable}. " No declarada.<br>";
   }

podrías igualmente (Bajo la filosofía de arrays) ir añadiendo en un array los resultados de tus validaciones y .. al final de todas las validaciones que apliques mostrar los errores posibles si los hay con otro bucle que recorrería ese array de "errores" generado.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 02/05/2004 a las 16:10
  #3 (permalink)  
Antiguo 02/05/2004, 19:47
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.942
Antigüedad: 13 años, 9 meses
Puntos: 20
Muchas gracias

Tu explicacion es "perfecta". Me queda muy claro el asunto.

Logre adaptarlo a mi necesidad, muchas gracias Cluster... Increible que un Domingo me hallas ayudado!.

Tu me corregiras, y/o me ayudaras a mejorar este script, pero creo que entonces con estas lineas tengo una INMENSA ayuda, y me ahorrare a futuro muuuuucho código, (pero muuuucho):

Código PHP:
    while(list($nombre$val) = each ($HTTP_POST_VARS)){$$nombre $val;}
    while(list(
$nombre$val) = each ($HTTP_GET_VARS)){$$nombre $val;}

    
$variables=array('a','v','d','mail','uno','dos','pais','sexo');
    foreach (
$variables as $variable){if (empty(${$variable})){${$variable}='';}} 
Con decirte que antes tenia TODAS mis paginas con infinidad de lineas asi:

Código PHP:
if(isset($_GET['visitante'])){$visitante $_GET['visitante'];}
    if(isset(
$_POST['visitante'])){$visitante $_POST['visitante'];}
    if(isset(
$_GET['pais'])){$pais $_GET['pais'];}
    if(isset(
$_POST['pais'])){$pais $_POST['pais'];} 
Etc, etc, etc, etc, etc, etc, etc, etc, etc, etc.... docenas de docenas de vars...

Es una lista de no terminar...

Solo ahora último tengo algunas páginas desarrolladas en solo POST o solo GET.

TRES (3) pregunticas:

Por que me conviene +
Código PHP:
{${$nombre} = $val;} 
que:
Código PHP:
{$$nombre $val;} 
? (Probe ambos y funcionan =)

Tiene alguna útilidad que haga:
Código PHP:
reset($HTTP_POST_VARS
?, es decir un ordenamiento de < a > ?

Hace muy poco migre a "PHP seguro", ahi fue donde aprendi $_POST y $_GET.

En PHP seguro debo utilizar $HTTP_POST_VARS ? o también cambia el asunto ?

Uuuuuyyyy....... Que alivio que me haz ayudado a lograr!.





PD: Aqui te coloco un minifragmento de una de las cientos de páginas donde hago unas locuuuuras.... devido a mi poquisima experiencia: (Pa que te rias un rato).

DE UN FILE QUE TIENE LA VARIABLE "dia de nacimiento":

Código PHP:
    if(!isset($dia_01)){$dia_01 '';}
    if(!isset(
$dia_02)){$dia_02 '';}
    if(!isset(
$dia_03)){$dia_03 '';}
    if(!isset(
$dia_04)){$dia_04 '';}
    if(!isset(
$dia_05)){$dia_05 '';}
    if(!isset(
$dia_06)){$dia_06 '';}
    if(!isset(
$dia_07)){$dia_07 '';}
    if(!isset(
$dia_08)){$dia_08 '';}
    if(!isset(
$dia_09)){$dia_09 '';}
    if(!isset(
$dia_10)){$dia_10 '';}
    if(!isset(
$dia_11)){$dia_11 '';}
    if(!isset(
$dia_12)){$dia_12 '';}
    if(!isset(
$dia_13)){$dia_13 '';}
    if(!isset(
$dia_14)){$dia_14 '';}
    if(!isset(
$dia_15)){$dia_15 '';}
    if(!isset(
$dia_16)){$dia_16 '';}
    if(!isset(
$dia_17)){$dia_17 '';}
    if(!isset(
$dia_18)){$dia_18 '';}
    if(!isset(
$dia_19)){$dia_19 '';}
    if(!isset(
$dia_20)){$dia_20 '';}
    if(!isset(
$dia_21)){$dia_21 '';}
    if(!isset(
$dia_22)){$dia_22 '';}
    if(!isset(
$dia_23)){$dia_23 '';}
    if(!isset(
$dia_24)){$dia_24 '';}
    if(!isset(
$dia_25)){$dia_25 '';}
    if(!isset(
$dia_26)){$dia_26 '';}
    if(!isset(
$dia_27)){$dia_27 '';}
    if(!isset(
$dia_28)){$dia_28 '';}
    if(!isset(
$dia_29)){$dia_29 '';}
    if(!isset(
$dia_30)){$dia_30 '';}
    if(!isset(
$dia_31)){$dia_31 '';} 
  #4 (permalink)  
Antiguo 03/05/2004, 08:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si usas los arrays supergloblales POST, GET .. etc .. ya son arrays de por sí .. así que puedes usarlos en tus foreach() y así eliminar esa "globalización" de variables que haces con:

Código PHP:
while(list($nombre$val) = each ($HTTP_POST_VARS)){$$nombre $val;}
    while(list(
$nombre$val) = each ($HTTP_GET_VARS)){$$nombre $val;} 
Quedaría algo así:

Código PHP:
    foreach ($_POST as $indice=>$valor){
        if (empty(
$_POST[$indice])){
           
$_POST[$indice]='';
        }
    } 
Y luego trabajas con tus $_POST[variable] como de costumbre .. Siempre intenta usar los arrays directamente .. NO "globalices" a ser posible..

Como arrays que són .. puedes aplicar funciones de arrays como "in_array()" para ver si tal elemento está en tu array y usar un array extra para contener los campos que realmente desees validar (aplicar tu validación concreta .. En algunos casos será un "que exista y con valor .. " en otros será validar el "tipo de dato que contiene .. etc".)

Sobre tus "pregunticas":

1) .. No sé realmente, habría que ver si dice algo al respecto www.php.net en su apartado de "variable variables".

2) El "reset" mueve el puntero interno del array $HTTP_????_??? al principio .. No sé ahora concretamente .. pero a la hora de recorrer un array con algún bucle .. el puntero interno queda al final de este al ser recorrido (el foreach() creo que lo deja al principio por si sólo).

3) En las FAQ's de este foro (de las primeras) tienes una explicación al respecto y las diferencias de ambos arrays (superglobal y no global).

Te recomiendo que explores el maravilloso mundo de los "arrays" .. veras que se pueden hacer muchas cosas con ellas si las empleas correctamente.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 03/05/2004, 10:38
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.942
Antigüedad: 13 años, 9 meses
Puntos: 20
31 Variables + 7 dias + 50 años = 88 variales, y quedan faltando muchas +...

Cita:
NO "globalices" a ser posible.
Mmmm....

¿Por que es incorrecto:

trabajar con una var que ha sido globalizada asi:

Código PHP:
$var '';
if(isset(
$_POST['var'])){$var $_POST['var'];} 
Acaso al iniciar como vacia la variable no se supone que estoy cumpliendo con "los estandares" de seguridad ?.

Que harias (en el caso de los dias del mes), para no escribir 31 lineas de código para iniciar esas variables cómo vacias ?.

Agradezco tu tiempo.
  #6 (permalink)  
Antiguo 03/05/2004, 11:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No es que no sea "seguro" lo que propones .. pero teniendo ya en una variable (de tipo array) tu "variable" externa (esas que llegan por tu método enviado a tu script ..) no creo que sea necesario "duplicar" el valor de dicha variable en $otra cuando ya la tienes ahí.

Es más .. si accedes directo a la variable para usarla por su array asociado .. si existe no tendras que "iniciarla" con '' de valor sólo que las comprobacione no serán tipo:

Código PHP:
if ($variable!=''){
// hacer tal cosa con $variable

Sino que serán tipo:

Código PHP:
if (!empty($_POST['variable'])){
// hacer tal cosa .. ejemplo usar $_POST['variable']

Cuando la necesites usar o validar su existencia .. no hablo de "iniciar" por qué donde la quieras usar haras tu:

echo $_POST['variable'] .. previo usar el empty() o bien el isset() en un condicional.

Tal vez me digas que el "condicional" como tal ya es un tiempo de proceso .. Ahí estaríamos ya poniendo en la balanza que es mas importante memoria consumida vs tiempo de proceso, pero .. vamos .. esto es la "teoría". A la hora de la verdad yo mismo a veces no hago todo eso xDD.

------

No sé si ese $dia_nº lo generás dinámicamente .. en tal caso usaría otra vez "varaibles variables" .. Y si esos datos me llegan de un formulario (tal vez checkbox? .. input text? .. ) no usaría "variables variables" sino arrays

<input name="nombre[]" value="si corresponde">

Y en PHP (script) recibiré un array con esos valores, que lo vuelvo a recorrer y usar si corresponde con bucles foreach() por ejemplo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 03/05/2004 a las 11:34
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 20:25.