Diferencia entre revisiones de «Plantilla:PHP/Declaraciones/Variables»
De WikiEducator
(5 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
+ | [[Usuario:ManuelRomero/php/NewPHP/B2T1/Sintaxis|v]] | ||
<div class="slide"> | <div class="slide"> | ||
− | Además de las variables definidas por el programador, existen gran | + | ===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 | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | *Además de las variables definidas por el programador, existen gran | ||
cantidad de variables predefinidas que se pueden usar libremente: | cantidad de variables predefinidas que se pueden usar libremente: | ||
− | {{ | + | {{MRM_Actividad|title= Variables predefinidas| |
;Variables de entorno o matrices superglobales | ;Variables de entorno o matrices superglobales | ||
#$GLOBALS | #$GLOBALS | ||
Línea 52: | Línea 59: | ||
</div> | </div> | ||
<div class=slide> | <div class=slide> | ||
− | {{ | + | {{MRM_Ejemplo| |
;En una operación aritmética con cadenas intenta obtener el valor numérico de las cadenas. | ;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. | ;En operaciones entre enteros y coma flotante resulta un número en coma flotante. | ||
Línea 90: | Línea 97: | ||
http://php.net/manual/es/language.types.type-juggling.php | 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 | *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 | ||
− | {{ | + | {{MRM_Puntos clave| |
*Operador '''''==''''' para comparar '''valores''' | *Operador '''''==''''' para comparar '''valores''' | ||
*Operador '''''===''''' para comparar '''valores y tipo''' }} | *Operador '''''===''''' para comparar '''valores y tipo''' }} | ||
Línea 96: | Línea 103: | ||
Se pueden crear nombres de variables dinámicamente anteponiendo $$ a una variable. | 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. | ;La variable variable toma su nombre del valor de otra variable previamente declarada. | ||
} | } | ||
Línea 113: | Línea 120: | ||
− | === | + | |
+ | ===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> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ;Ambito de una variable | ||
+ | *En función de esto tenemos variables locales a la función y variables locales al script | ||
+ | <source lang=php> | ||
+ | $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) | ||
+ | } | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ;Ambito de una variable | ||
+ | *Para poder hacer dentro de una función a una variable definida fuera, he de usar la palabra reservada '''''global''''' | ||
+ | <source lang=php> | ||
+ | $a = 1; | ||
+ | function prueba() | ||
+ | { | ||
+ | global $a; | ||
+ | $b = $a; | ||
+ | // En este caso se le asigna a $b el valor 1 | ||
+ | } | ||
+ | </source> | ||
+ | {{MRM_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 | ||
+ | }} | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ====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 | ||
+ | <source lang=php> | ||
+ | function contador() | ||
+ | { | ||
+ | static $a=0; | ||
+ | $a++; | ||
+ | // Cada vez que se ejecuta la función, se incrementa el valor de $a | ||
+ | } | ||
+ | </source> | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ;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. | ||
+ | {{MRM_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''''' | ||
+ | }} | ||
+ | </div> |
Última revisión de 10:18 15 oct 2016
- 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; ?>
$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
- En operaciones lógicas, los datos NULL, 0,'0' y ‘ ' se consideran FALSE.
- Cualquier otro dato se considera TRUE (incluida lacadena 'FALSE').
- En operaciones aritméticas no unitarias las cadenas se intentan leer como números y, si no se puede, se convierten en 0,
- TRUE se convierte en 1, y FALSE se convierte en 0.
- En operaciones de comparación, si un operando es un número, el otro también se convertirá en un número.
- Sólo si ambos operandos son cadenas se compararán como cadena.
- 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 :
- (int) : Fuerza la conversión a entero
- (real), (double), (float): Fuerza la conversión a coma flotante.
- (string): Fuerza la conversión a cadena de caracteres.
- (array): Fuerza la conversión a matriz
- (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
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>