Plantilla:PHP/Declaraciones/Variables

De WikiEducator
Saltar a: navegación, buscar

v

Valor de variable

  • A una variable le puedo asignar un valor en cualquier momento
  • El tipo de la variable depende del valor que tiene
  • Hay una serie de funciones del sistema relacionadas con los valores y las variables
  • Además de las variables definidas por el programador, existen gran

cantidad de variables predefinidas que se pueden usar libremente: {{MRM_Actividad|title= Variables predefinidas|

Variables de entorno o matrices superglobales
  1. $GLOBALS
  2. $_SERVER
  3. $_GET
  4. $_POST
  5. $_COOKIE
  6. $_FILES
  7. $_ENV
  8. $_REQUEST
  9. $_SESSION
Ejemplos de declaraciones
<?php
$Cadena = "Tipo de dato de cadena";
$NúmeroEntero = 1; // Un valor entero
$NúmeroFlotante = 1.55; // Un valor numérico con decimales
$Booleano = True; // Un valor booleano True (1) o False (0)
$Matriz[0]= "A"; // Un valor de matriz con subíndice 0
$Matriz[2] = 3; // Un valor de matriz con subíndice 2
$NúmeroOctal = 012; // Un número octal 12 es decimal 10
$NúmeroHexadecimal = 0x1C; //Un número hexadecimal 1c igual a decimal 28
$NúmeroNegativo = -33; // Los números negativos llevan el signo adelante
$NúmeroFlotanteExp = 1.55e3;
echo $Cadena;
echo $NúmeroEntero;
echo $NúmeroFlotante;
echo $Booleano;
echo $Matriz[0];
echo $Matriz[2];
echo $NúmeroOctal;
echo $NúmeroHexadecimal;
echo $NúmeroNegativo;
echo $NúmeroFlotanteExp;
?>
Conversión de tipos
  • PHP es muy flexible en el manejo de los tipos de datos.
  • PHP evalúa la operación a realizar y el tipo de los operandos, y adapta los operandos para poder realizar la operación lo más correctamente posible.
$varN=1;
$varC=2 flores’;
$varC=$varC+$varN; // qué valor sale????


Icon casestudy.gif
Ejemplo
En una operación aritmética con cadenas intenta obtener el valor numérico de las cadenas.
En operaciones entre enteros y coma flotante resulta un número en coma flotante.
Una concatenación de cadenas con una variable numérica hace que ésta última sea convertida a cadena.


$varN=1;
$varC=4 flores’;
$varC=$varC.$varN;  //Qué valor sale???
  • Podemos tener conversiones explícitas o implícitas
Conversión automática o implícitas
  • El interprete las realiza en determinadas situaciones
  • Para ello manda el operador que es quien indica el tipo de expresión
  • Php adapta los operadores a la operación a realizar
  • Reglas de conversión automática
  1. En operaciones lógicas, los datos NULL, 0,'0' y ‘ ' se consideran FALSE.
    1. Cualquier otro dato se considera TRUE (incluida lacadena 'FALSE').
  2. En operaciones aritméticas no unitarias las cadenas se intentan leer como números y, si no se puede, se convierten en 0,
    1. TRUE se convierte en 1, y FALSE se convierte en 0.
  3. En operaciones de comparación, si un operando es un número, el otro también se convertirá en un número.
    1. Sólo si ambos operandos son cadenas se compararán como cadena.
  4. En operaciones de cadenas de caracteres, NULL y FALSE se convierten en ‘ ', y TRUE se convierte en '1'.
Conversión forzada o explícita
  • En ella nosotros espeficicamos el tipo que queremos que tenga el operando
  • Si hace falta luego se aplicará la conversión forzada, por lo que no siempre se adaptará al tipo especificado
  • PHP permite otras conversiones implícitas de tipos :
  1. (int) : Fuerza la conversión a entero
  2. (real), (double), (float): Fuerza la conversión a coma flotante.
  3. (string): Fuerza la conversión a cadena de caracteres.
  4. (array): Fuerza la conversión a matriz
  5. (object): Fuerza la conversión a un objeto.
Conversión de tipos
  • Se puede mirar la web para ello
http://php.net/manual/es/language.types.type-juggling.php
  • Más adelante veremos los operadores de comparación. Por ejemplo el valor 8 y el valor "8" son iguales, pero no son del mismo tipo


Icon key points.gif

Puntos clave

{{{1}}}

Variable de variables

Se pueden crear nombres de variables dinámicamente anteponiendo $$ a una variable.

{{MRM_Punto clave|

La variable variable toma su nombre del valor de otra variable previamente declarada.

}

<?php
$var = “uno”;
$$var = “dos”;
print ($var); // ???
print ($uno); // ???
print ($$var); // ???
print (${$var});
Esto es una una por referencia, a diferencia, se están creando dos variables distintas que ocupan direcciones de memoria distintas.
  • En php si queremos acceder a la dirección de memoria de una variable usaremos el símbolo &


Ambito de una variable

  • http://php.net/manual/es/language.variables.scope.php
  • Ya sabemos que en PHP puedes utilizar variables en cualquier lugar de un programa.
  • Si esa variable aún no existe, la primera vez que se utiliza se reserva espacio para ella.
  • En ese momento, dependiendo del lugar del código en que aparezca, se decide desde qué partes del programa se podrá utilizar esa variable.
  • A esto se le llama visibilidad de la variable.

</div>

Ambito de una variable
  • En función de esto tenemos variables locales a la función y variables locales al script
$a = 1;
function prueba()
{
    // Dentro de la función no se tiene acceso a la variable $a anterior
    $b = $a;
    // Por tanto, la variable $a usada en la asignación anterior es una variable nueva
    //   que no tiene valor asignado (su valor es null)
}
Ambito de una variable
  • Para poder hacer dentro de una función a una variable definida fuera, he de usar la palabra reservada global
$a = 1;
function prueba()
{
    global $a;
    $b = $a;
    // En este caso se le asigna a $b el valor 1
}


Icon activity.jpg
Actividad
  • Una funcion que coja un precio y lo actualice según el iva que reciba de argumento.
  • El precio total se muestra fuera de la funcion



Variables static

  • Si una variable la declaramos static, hacemos que su posición de memoria no se elimine aunque no sea accesible por el script
  • Cuando volvamos a una sección del script donde vuelve a ser accesible, entonces retomaremos esa posicion de memoria, con el valor que tuviera
function contador()
{
    static $a=0;
    $a++;
    // Cada vez que se ejecuta la función, se incrementa el valor de $a
}
static
  • Las variables estáticas deben inicializarse en la misma sentencia en que se declaran como estáticas. De esta forma, se inicializan sólo la primera vez que se llama a la función.


Icon activity.jpg
Actividad
  • Haz un programa que llame 20 veces a una función
  • Cada vez que llame a la función, la función muestra un mensaje que me diga me has llamado 1 vez, o me has llamado 20 veces