Estructuras de control en PHP IV: el operador ternario

[Control de flujo o estructuras de control en PHP VI] Operador Ternario

Valencia, 28/09/2012, G.B.
Como os comenté en el anterior post, para finalizar con las instrucciones condicionales en PHP, vamos a conocer ahora el denominado  operador ternario. En realidad, no es una nueva clase de instrucción condicinal, sino una forma distinta de representar las instrucciones condicionales if/else, pero utilizando menos  líneas de código, por decirlo de algún modo.

Toma el nombre de ternario porque utiliza 3 argumentos; tiene tres partes definidas: (PARTE1) ? (PARTE2) : (PARTE3);

    • La primera parte es la condición o expresión que incluye la variable
    • La segunda el resultado de esa condición o expresión si el valor de la variable es verdadero (TRUE), cuando la condición se cumple
    • La tercera parte es el valor o expresión si el resultado es falso (FALSE), cuando no se cumple la condición

Sintaxis del operador ternario:

$NombreVariable = (condición) ? sentencia1-cuando-se-cumple : sentencia2-cuando-no-se-cumple;
Si utilizamos alguna instrucción o expresión como por ejemplo echo, la sintaxis sería:
echo ($NombreVariable = (condición)) ? sentencia1-cuando-se-cumple : sentencia2-cuando-no-se-cumple;

Otra forma de representarlo sería como lo hace la Wikipedia (añadiendo el punto y coma final de la expresión):

expresión boleana ? valor si cierto : valor si falso;
ó
variable = condición ? valor si es cierto : valor si es falso;

 Como podemos observar se constituye de (PARTE1) ? (PARTE2) : (PARTE3); que significa (CONDICIÓN) ? (RESULTADO1) : (RESULTADO2); También podemos representarlo así:
INSTRUCCIÓN (CONDICIÓN) ? (RESULTADO-SI-SE-CUMPLE) : (RESULTADO-SI-NO-SE-CUMPLE);

Vamos a verlo con un ejemplo. Primero escribiremos la instrucción condicional utilizando la estructura if/else que ya conocemos. En segundo lugar, la reescribiremos utilizando la sintaxis del operador ternario. El ejemplo, muy sencillo, nos mostrará el mensaje “Son las 7 y cuarto de la mañana, hora de levantarse!!“, si son las 7:15 horas de la mañana (TRUE) y el mensaje “Estoy aprendiendo PHP, poco a poco.” , si lo ejecutamos a cualquier otra hora del día, es decir, si la condición es falsa ya que el valor de la variable  es distinto (FALSE):

Primero, la instrucción if/else que ya conocemos:

<?php $hora = date ('H:i');
// formato de hora y minutos en PHP
if ($hora == ('7:15'))
{
echo 'Son las 7 y cuarto de la mañana, hora de levantarse!!';
}
else
{
echo
'Estoy aprendiendo PHP, poco a poco!';
}
?>

Ejecutar ejemplo

Y ahora lo mismo utilizando el operador ternario:

<?php
$hora = date ('H:i');
echo ($hora == ('7:15')) ? 'Son las 7 y cuarto de la mañana, hora de levantarse!!' : 'Estoy aprendiendo PHP, poco a poco!';
?>

Ejecutar ejemplo

El resultado será exactamente el mismo. Tened en cuenta que echo no necesita paréntesis, ya que no es una función, sino una sentencia del lenguaje.

Con esto finalizamos las instrucciones condicionales o de control de flujo en PHP. Lo siguiente que veremos serán las instrucciones de iteracción o bucles. De todas formas, las seguiremos utilizando en los próximos ejemplos.

Lecturas recomendadas:
El operador ternario en PHP (webtaller.com)
Operador terciario (Wikipedia)
Operadores de comparación en PHP

Estructuras de control en PHP V: instrucción switch

php

[Control de flujo o estructuras de control en PHP V] Instrucciones Switch

Valencia, 27/09/2012, G.B.
Tras haber conocido ya las estructuras condicionales en PHP con if, if/else y if/elseif/else, pasamos ya a la última: la estructura switchYa sabemos que las sentencias o estructuras condicionales se utilizan para realizar distintas acciones basadas en diferentes condiciones. Switch actúa de la misma manera que lo hace la estructura if/elseif/else, pero permite simplificar el código cuando las condiciones o posibilidades son muchas.

La expresión o variable que va después de la palabra reservada switch se evalúa utilizando la palabra case (caso en inglés) seguida de dos puntos. Si hay un equivalente, una coincidencia, se ejecutará la sentencia tras ‘case‘. En caso contrario, se sale de la instrucción utilizando la palabra reservada break y se pasa al siguiente ‘caso’ o case, en donde se evaluará la siguiente sentencia,  y así hasta llegar a un case en el que se cumpla.  En el caso de que no se cumple ninguna de las equivalencias presentadas tras cada uno de los ‘case’, es decir, en el caso de que no haya ninguna equivalencia, se puede utilizar una instrucción por defecto representada por la palabra default, también  seguida de dos puntos. La estructura condicional switch está ‘encerrada’ entre brackets { }.

Pero mejor veamos una representación de la sintaxis de switch:

switch ($nombreVariable) {
case valor1:
      (sentencia1);
      break; // salida que se utiliza opcionalmente
case valor2:
      (sentencia2);
      break;
case valor3:
      (sentencia3);
      break;
case valor4:
      (sentencia4);
      break;
case valor5:
      (sentencia5);
      break;
defaulf:
      (sentencia o instrucción predeterminada); // esta se ejecutará en caso de que ninguna de las equivalencias anteriores se cumpla
}

Resumiéndolo:

switch (variable) {
   case: sentencia1;
   break; 
case: sentencia2;
   break; 
default: sentencia predeterminada;

Para entenderlo mejor, vamos a adaptar el ejemplo del post anterior a la estructura switch, aumentando con esa instrucción las posibilidades:

<?php
$hora = date ('H');
switch ($hora) {
   case 7:
   echo 'Es hora de levantarse, campeón';
   break; // salida que se utiliza opcionalmente
case 8:
   echo '¿Estás despierto ya?';
   break;
case 10:
   echo '¿Un cafetito?';
   break;
case 13:
   echo 'Falta menos para comer. ¿Tienes hambre ya?';
   break;
case 14:
   echo 'A comer!';
   break;
case 16:
   echo '¿Te apetece otro café?';
   break;
case 19:
   echo 'Descansa un poco: apaga el ordenador.';
   break;
case 20:
   echo 'Queda menos para cenar. ¿Tienes hambre?';
   break;
case 23:
   echo 'El día ya casi ha pasado. Debes estar cansado';
   break;
case 24:
   echo '¿Por qué no te vas a dormir?';
   break;
default:
   echo '<h2>Bienvenido a Aprendiendo PHP</h2>'; /* Esta es la frase por defecto que aparecerá en formato Título 2 en el caso de que no se cumpla ninguna de las equivalencias presentadas */
   break; 
}
?>

Ejecutar ejemplo

Ya sólo nos queda  ver -respecto a las estructuras condicionales en PHP- otro tipo de operador condicional que equivale a la estructura if/else denominado operador ternario. En el próximo post…


Lecturas recomendadas:
Switch
PHP Instrucción Switch
PHP Switch Statement

Estructuras condicionales en PHP IV: If… elseif… else

Abril 2016: Post recuperado de Aprendiendo PHP (web ya inactiva)
[Control de flujo o estructuras de control en PHP IV] Instrucciones IF/Elseif/Else

Valencia, 24/09/2012, G.B.
Tras las estructuras condicionales o de control de flujo if y if… else, ahora toca el turno a la siguiente: if… elseif… else. Con elseif añadimos más posibilidades, más alternativas.

Elseif (también escrito else if, aunque menos frecuentemente) es una combinación de if y else y una ampliación de if. Si la condición contenida en el if es falsa (FALSE, que no se cumple), entonces el control de flujo saltará al primer elseif. Si éste tampoco se cumple, pasaría al siguiente, hasta llegar a un elseif en que la condición sí se cumpliera, que fuera verdadera (TRUE). En el caso de que no se cumpliera ninguno de los elseif, pasaríamos por último al else para ejecutar las sentencias contenidas en el mismo.

Como observamos, las estructuras elseif pueden anidarse, es decir, ir abriendo distintas posibilidades si no se cumplen las anteriores. La sintaxis es la siguiente:

if (condición1) {
sentencia1; // Si esto no se cumple, saltamos al primer elseif
}

elseif (condición2) {
sentencia2;
}
 // Tras esta línea pueden ir anidados más elseif
else {
sentencia3; // Si ninguno de los elseif se han cumplido, se ejecutará estas sentencias
}

En caso de que la primera condición, la del if, no se cumpla, pasamos al primer elseif. Si este tampoco se cumple, pasaríamos al siguiente, hasta llegar al else, en caso de que no se cumpliera ninguno de ellos. Veamos un pequeño ejemplo:
<?php
$numero1 = '2';
$numero2 = '3';
$numero3 = '4';
$numero4 = '2';
if ($numero1 == $numero2) {
print "El $numero1 es igual al $numero2.";
}
elseif ($numero2 == $numero3) {
print "El $numero2 es igual al $numero3";
}
elseif ($nunero3 == $nunero4) {
print "El $numero3 es igual al $numero3";
}
else {
print "El $numero1 es igual al $numero4.
¿Lógico, no?";
}
?>


Ejecutar ejemplo

Otro ejemplo tonto, lo sé, pero espero que  explicativo.  También podemos ampliar el ejemplo que hemos utilizado en los anteriores posts sobre las estructuras condicionales, especificando franjas horarias más pequeñas:

<?php
$hora = date (“H”);
if ($hora == ('7') or $hora < ('8')){
echo 'Es hora de levantarse, campeón';
}
elseif ($hora == ('14')){
echo '¿Qué vas a comer hoy?';
}
elseif ($hora <= ('16')){
echo '¿Demasiado tarde para comer, ¿no crees?';
}
elseif ($hora <= ('20')){
echo 'No, todavía no es hora de cenar';
}
elseif ($hora == ('21') or $hora <= ('22')){
echo 'Ve pensando en lo que vas a cenar, si tienes hambre, claro';
elseif ($hora == ('23')){
echo 'Demasiado tarde para cenar, ¿no crees?'; /
}
elseif ($hora == ('1') or $hora <= ('2')){
echo 'Si no te has ido a dormir todavía, deberías hacerlo!';
}
else
echo 'Bienvenido';
?>

Ejecutar ejemplo 2

Por último, comentaros que puede ser realmente engorroso tener que contemplar todas las posibilidades y así estar ‘obligados’ a utilizar un montón de elseif anidados. Este último ejemplo se puede hacer de una forma mucho mejor  y más cómoda (sin tener en cuenta los posibles fallos de cálculo entre las franjas horarias que yo haya podido cometer al hacerlo…). Para ello, disponemos de la estructura switch, la cual es más sencilla de escribir (ahorramos líneas de código y conseguimos el mismo resultado que con if/elseif/else) y que veremos en el siguiente post. Hasta pronto!


Lecturas recomendadas:

elseif (PHP.net)
Elseif (gratismil.com)

Estructuras condicionales en PHP III: if…else

 Abril 2016: Post recuperado de Aprendiendo PHP (web ya inactiva)
[Control de flujo o estructuras de control en PHP III] Instrucciones IF/Else

Valencia, 23/09/2012, G.B.
Como hemos visto en el anterior post sobre instrucciones If sencillas, esta estructura condicional puede que no nos sea suficiente para lograr nuestro objetivo. Así, en el ejemplo anterior, se muestra un mensaje si abrimos la página después de las 07:00 a.m. (después de las siete de la mañana). ¿Y si queremos ajustar más el margen y mostrar mensajes distintos en franjas horarias distintas,  más ‘pequeñas’? Pues que entonces tendremos que utilizar alguna de las tres construcciones o estructuras condicionales siguientes: if/else; if/elseif/else; switch. Vamos a ver ahora las estructuras condicionales if…else en PHP.

El bloque if/else es una decisión en dos direcciones. Si la expresión o condición if es verdadera (TRUE), se ejecutará el bloque se sentencias o expresiones. Si la expresión o condición es falsa (FALSE), se ejecutará en su lugar las sentencias o expresiones del bloque else. La sintaxis es la siguiente:

if (expresión)
{

   sentencias1;
}
   else {
   sentencias2;
}

Recordad que cada bloque debe ir siempre encerrado entre brackets, apertura y cierre { }. Veámoslo con este sencillo (y naive) ejemplo:

<?php
$hora = date (“H”);
if ($hora == (‘7’))
{
echo ‘<h2>Es hora de levantarse, campeón</h2>’; // Si son las 7 de la mañana, se mostrará este mensaje en Título2 (H2)
}
else {
echo ‘<b>Aún no son las 7, aprovecha!</b>’; // Si todavía no son las 7 de la mañana, se mostrará este otro mensaje en negrita
}
?>

Ver el ejemplo

Bien, pero todavía podemos afinar mucho más para que este código sea útil ¿verdad? Lo veremos con las sentencias if/elseif/else y switch. Cuando  hallamos visto todas las estructuras condicionales, utilizaremos ejemplos más interesantes, más útiles. Hasta muy pronto!

Lecturas recomendadas:else (PHP.net)
Estructura if-else en PHP (documentoweb.com)
Sentencia if y else en PHP (codigoprogramacion.com)

entre muchas más…

Estructuras condicionales en PHP II: instrucciones If sencillas

php
 Abril 2016: Post recuperado de Aprendiendo PHP (web ya inactiva)
[Control de flujo o estructuras de control en PHP II] Instrucciones IF
Valencia, 22/09/2012, G.B.
Como os comentaba en el anterior post, la primera parte de Control de flujo o estructuras de control en PHP, vamos a explicar ya la primera clase de ellas, las estructuras o instrucciones condicionales en PHP. Como bien indica su nombre, las instrucciones condicionales permiten determinar las acciones a realizar en función de una condición o condiciones.  Son las siguientes:
La más sencilla de ellas es la instrucción If  (‘si’ condicional en inglés) y se representa de las siguientes formas:
if (condición)
acción;

o lo que es lo mismo:
if (expresión)    {     (sentencias);    }

Donde vemos condición podemos llamarlo expresión y donde leemos acción, podemos llamarlo sentencias, ¿de acuerdo? 


Es muy recomendable utilizar los brackets {  } para separar el flujo de acciones, como ya veremos. También podemos dejar los brackets  en la misma línea,  o el primero de ellos después de la expresión o condición encerrada entre paréntesis, quedando de cualquiera de las siguientes formas:
if (expresión){ (sentencias); }
if (expresión) {    (sentencias);
}
if (expresión)
{    (sentencias);
}

El motor de PHP evalúa la condición o expresión, que siempre debe ir entre paréntesis, y si el resultado de la evaluación es verdadero (TRUE), se realizará la acción de la siguiente línea de código. En caso contrario, es decir, si la condición no es verdadera (devuelve FALSE), no se realizará ninguna acción.

Un ejemplo sencillo, del que ya hablamos en el anterior post, sería almacenar la hora en una variable para el valor que nos da con uno concreto, utilizando los operadores de PHP que ya conocemos. Vamos a ello:

<?php
$hora = date ("H");
if ($hora >= ('7'))
{
    echo 'Es hora de levantarte, campeón';
}
?>

Ejecutar ejemplo

Este fragmento de código evalúa la fecha del sistema y si se ejecuta a partir de las 07:00 horas de la mañana, imprimirá en pantalla, en la página web en donde está la instrucción condicional, el mensaje de texto Es hora de levantarse, campeón!. En caso contrario, simplemente no mostrará nada. 

Como vemos, y reiterando, el operador básico if evalúa una expresión encerrada entre paréntesis ( ) y si la condición se cumple, es decir, es verdadera, se ejecuta el bloque encerrado entre brackets { } que sigue a la expresión condicional, las sentencias. Otro ejemplo:

<?php
if ($numero1 === $numero2)
   { print "el $numero1 es idéntico al $numero2" ; }
?>
En esta condicional simple, se evalúa si la variable $nunero1 es idéntica (=== ) a la variable $numero2. Si es así, se imprimirá en pantalla la frase el $numero1 es idéntico al $numero2.

Si, ya sé, esto todavía no es muy útil.  En el siguiente post veremos cómo podemos sacarle mucho más partido a las sentencias condicionales con if /else, on if /elseif y con switch.  Esperad sólo un poquito, que ya he vuelto a retomar este blog…

Algunas lecturas recomendadas: Constructor if

Una alternativa a XAMP: EasyPHP

Una alternativa a XAMP: EasyPHPCon demasiadas cosas a la vez, demasiados ‘líos’ y este blog abandonado…

Valencia, 04/07/2012, G.B.
Hace algunos días leí sobre EasyPHP, un sistema completo para utilizar un servidor Apache, con PHP y MySQL en tu PC bajo Windows. Básicamente es una alternativa a XAMP, un servidor Apache local con todo lo necesario para correr aplicaciones bajo las tecnologías utilizadas por los mejores CMS del mundo (WordPress, Joomla!, Wikipedia…).

Pues bien, EasyPHPH, tal vez más conocido como entorno WAMP es otro entorno Apache en el cual podemos instalar y ‘correr’ nuestras webs y aplicaciones bajo la misma tecnología, tecnología libre, opensource (qué bien sienta decir eso!).

Reconozco que todavía no lo he probado, aunque nunca es tarde si la dicha es buena ¿no?. Para descargártelo, pulsa en el siguiente enlace: http://www.easyphp.org/download.php

P.D. Tal vez este post hubiera de haber sido escrito en Aprendiendo PHP

Control de flujo o estructuras de control en PHP (I): una introducción

Introducción  a las sentencias If

 

Valencia, 23/06/2012, G.B.
Ya sabemos un poco más sobre PHP, pero hay algo muy importante que hemos dejado de lado hasta ahora: me refiero a las estructuras de control de flujo o estructuras condicionales. ¿Y qué son?

Todo lenguaje de programación dispone de este tipo de estructuras que nos permiten ‘ir hacia un sitio u otro’, conseguir un resultado u otro dependiendo del contexto, de la interacción con el usuario o con una variable. Así, podemos decidir qué hacer o qué respuesta dar dependiendo de las posibles condiciones, es un flujo de causa-efecto, por decirlo de algún modo: causa 1: efecto uno,  consecuencia o respuesta uno; causa 2: efecto, consecuencia o respuesta 2, y así indefinidamente, dependiendo de la versatilidad o complejidad de la estructura de control que necesitemos programar para nuestra página web. Con ello, damos cierta interactividad y versatilidad a nuestras páginas.

Así, podemos decir que las sentencias o estructuras condicionales se utilizan para realizar distintas acciones basadas en condiciones diferentes.

Todo script PHP está construido en base a una serie de sentencias. Una sentencia puede ser una asignación, una llamada de función, un ciclo, una sentencia condicional o incluso una sentencia que no hace nada (una sentencia vacía). Las sentencias generalmente finalizan con un punto y coma. Adicionalmente, las sentencias pueden agruparse en un conjunto de sentencias, encapsulándolas entre corchetes. Un grupo de sentencias es una sentencia por sí misma también.
Fuente: http://www.php.net/manual/es/control-structures.intro.php

Las estructuras de control son por tanto secuenciales, siguen un flujo. Veámoslo con un clásico ejemplo (en este primer post todavía sin código):

Si la página web se carga por la mañana, imprime el mensaje de texto “Buenos días”;
Si la página web se carga por la tarde,  imprime el mensaje de texto “Buenas tardes”
Si la página web se carga por la noche,  imprime el mensaje de texto “Buenas noches”

Traduciendo el anterior ejemplo escrito en lenguaje natural a lenguaje PHP, tendríamos que utilizar una estructura de control de flujo del tipo If… elseIf… else (basada en el inglés).  La anterior estructura de flujo (ejemplo en azul) imprimiría (mostraría) un determinado texto de bienvenida dependiendo de la franja horaria en la que el usuario cargue nuestra página web. Pero hay más tipos de estructuras de control de flujo. Todas ellas las veremos en el próximo post., con ejemplos en PHP, por supuesto. Dejo un adelanto de la primera clase de estructuras de control de flujo que vamos a ver, me refiero a las sentencias If:

Bueno, hasta aquí la introducción. En los siguientes posts nos adentraremos más en las estructuras de control, empezando, además de por poner ejemplos de código, por su clasificación, basada en el uso que le damos. Como ya habréis podido observar, las estructuras de control son simples secuencias lógicas trasladadas a la sintaxis propia del lenguaje que vayamos a utilizar, en nuestro caso, PHP.

 

Hasta pronto, prometido (ahora sí!)

 

Lecturas recomendadas:
Estructuras de control en la Wikipedia y este otro enlace (si os manejís bien en la lectura del inglés):  If… Else Statements

Más sobre las matrices en PHP: tipos de arrays

[Matrices en PHP II]

Valencia, 17/03/2011, G.B.
Ya hemos hablado sobre las matrices en PHP pero de una forma muy general. Con las matrices realmente podemos hacer muchas cosas, que ya iremos viendo y descubriendo (yo me incluyo).

Ahora lo que vamos a ver son los distintos tipos de matrices. He basado este post en un tutorial de Webtaller.com. En los ‘créditos’, al final de este post, adjunto el enlace.  Otro interesante enlace al respecto es el siguiente: www.php-es.com/language.types.array.html. Ahora, vamos ‘al tajo’.

Podemos diferenciar entre los dos tipos de matrices existentes:

Indexada: Son las matrices cuyo acceso a los elementos se realiza por la posición que ocupan dentro de la estructura (empezando siempre desde el cero). Ejemplo: $tipos_matrices[0]
Asociativa: Matriz en la que los elementos están formados por pares clave-valor y el acceso se realiza proporcionando una determinada clave. Ejemplo: $tipos_matrices[‘asociativa’]

Cómo crear las matrices:

De forma implícita: consiste en indicar a la matriz el elemento (tanto por su posición o por su clave, tal y como acabamos de indicar).
Un ejemplo:  $gestores_contenido[0]=’Wordpress’;

Si no indicamos la posición de la matriz, el array cogeré el valor siguiente al último valor que haya sido introducido.
Ejemplo: $gestores_contenido[]=’Joomla’ // tomaría como valor 1 ya que el último introducido era el cero (0).

Mediante array(): Pasamos los elementos como parámetros. Si es una matriz indexada, toman la posición que ocupan en la creación de la matriz. Y si es unaa matriz asociativa, se les asigna su valor mediante “=>”. Ejemplo: $lenguajes=array(‘Tipo’=>’Script’, ‘Nombre’=>’JavaScript’);

PHP no sólo se limita a la existencia de matrices por sí mismo,  sino que existen matrices de matrices, o lo que es lo mismo, matrices multidimensionales. Ejemplo: $gestores_contenido[2][‘PHPLD’]

Cómo recorrer una matriz

Existen varias herramientas para poder acceder a los elementos de una matriz. Siempre se  mantiene una referencia del elemento de la matriz al que se tiene acceso. Por ello,  para recorrer una matriz sólo tendremos que modificar dicha referencia. En caso de una matriz indexada el recorrido se realizará mediante un bucle. Para ello debemos saber el número de elementos totales de los que dispone la matriz. Para ello nos basamos de una función denominada count (variable),  donde el parámetro variable representa la variable de la que se quiere obtener el número de elementos. Si variable es una matriz, devuelve el número de elementos que tiene. Nos devolverá 1 si sólo tiene un elemento (aunque no sea matriz) y 0 si no tiene ningún valor.

Otra función que nos permite saber el número de elementos es sizeof (matriz) .

Para acceder a los elementos de una matriz asociativa debemos usar la función each() que recupera el par formado por clave y valor y además avanza una posición de puntero. Su sintaxis es each (matriz). Para entender mejor la sintaxis de each, echadle un ‘vistacillo’ a  este post: tomatoma.wordpress.com/manual-de-php/4-matrices-for-each/

La función que realiza el constructor list (variable1,variable2…variableN) es asignar los valores del elemento actual de una matriz a las variables indicadas como parámetro.

NOTA: Me queda pendiente poner los ejemplos. Prometido… 


Bibliografía recomendada:

Matrices en PHP (I)

Ya casi ni me acuerdo de lo que es PHP, tras más de un mes sin ‘tocar’ este blog. Circunstancias, circunstancias, malditas circunstancias…

Valencia, 27/11/2011, G.B.
Hace algún tiempo os comentaba que el próximo post iba a ser sobre las matrices en PHP, un tipo de variables muy importante en programación. Bien, ha llegado el momento. Allá voy.

Una matriz es un tipo de variable que representa a un conjunto de datos a los cuales se puede acceder individualmente a través de su índice u ordenación.  Su nomenclatura oficial es array. Así, los arrays nos permiten asignar más de un valor a una sola variable para luego recuperar cualquiera de sus valores a través de su ordenación o índice. Resaltar que el primer elemento de una matriz o array es el cero (0), a no ser que indiquemos lo contrario.

Bueno, tras esta descripción bastante teórica, vamos a empezar a ilustrar el concepto con un ejemplo. Imaginemos que queremos guardar en variables el número de libros que hemos leído durante el pasado año, si somos buenos lectores, claro:

<?php
$libros_enero = 1; // poco, has leído poco, amiguito
$libros_febrero = 2; // el doble que el mes anterior, no está mal
$libros_marzo = 4; // Otra vez el doble. Muy bien!
$libros_abril = 5; // Aumentamos pero ñlo que no puede ser, no puede ser
$libros_mayo = 6; // Idem del mes anterior
$libros_junio = 7; // Bien, seguimos creciendo en sabiduría…
$libros_julio = 1; // Uy, aquí hemos caído. ‘Back to square one’
?> 

Una vez declaradas todas las variables, podríamos utilizar el siguiente código para recuperar los valores de cada una de ellas. Vamos a utilizar primero las cadenas de bloque que ya hemos visto:

<?php
echo <<< LIBROS

Número de libros que he leído:
– En enero: $libros_enero <br />
– En febrero $libros_febrero <br />
– En marzo $libros_marzo <br />
– etc., etc… <br />
LIBROS;
?> 

El resultado será el siguiente texto:

– En enero: 1
– En febrero: 2
– En Marzo: 4
– etc., etc…

Desde luego, hay más formas de operar y declarar las matrices. Como por ejemplo:

<?php
$libros= array (2, 5, 8, 12); 
?> 

Acabamos de crear una matriz (de nuevo $libros) con cuatro elementos. El primero tiene el valor 2, el segundo 5, el tercero 8 y el cuarto 12.  PHP entenderá que hemos creado la matriz gracias al uso de la palabra reservada array, y que tiene cuatro elementos. Son los números enteros que van entre paréntesis y separados por comas. También podrían ser otro tipo de datos, como cadenas de texto, por ejemplo. Para recuperar los valores de la matriz podríamos volver a utilizar el código anterior, un echo utilizando una cadena en bloque:

Para añadir otro elemento a la matriz que hemos creado, simplemente debemos especificarlo:

<?php
$libros[]= 7;
?>

Y ahora hemos añadido otro elemento a la matriz $libros. Como observamos, para hacerlo simplemente la hemos llamado añadiéndole un corchete de apertura y otro de cierre, indicando seguidamente a través del signo de igualdad el nuevo valor de la matriz, nuestro añadido número 7. El motor de PHP de nuevo entenderá que es una matriz y que acabamos de añadir un nuevo elemento con el valor (numérico en este caso) 7. Vamos a verlo unido, indicando además una nueva instrucción para comprobar los valores de la matriz que hemos creado (print_r):

<?php
$libros= array (2, 5, 8, 12); 
$libros[]= 7;
print_r ($libros);
?>  

El resultado será el siguiente:

Array ([0]==>2 [1]==>5 [2]==>8 [3]==>12 [4]==>2 [4]==>7 )El primer elemento [0] tiene el valor 2, el segundo elemento [1] tiene el valor 5, el tercer elemento [2] tiene el valor 8, el cuarto elemento de la matriz [3] tiene como valor el12 y, por último, el quinto elemento de la matriz que hemos añadido ennuestra segunda línea de código $libros[]= 7;), tiene como valor el 7.

Bueno, hasta aquí la primera parte, muy teórica, lo sé. En la segunda parte veremos unos cuántos más ejemplos y cosas que se me pueden haber escapado…

Ver ejemplo

Algunos enlaces interesantes al respecto:
– Matrices en PHP (PHP.net): http://php.net/manual/es/language.types.array.php
– Matrices en PHP (php-es.com):  http://www.php-es.com/language.types.array.html
– Matrices (Array): http://www.webtaller.com/manual-php/matrices-array.php

Funciones en PHP (I): una introducción

Ante todo pediros disculpas por no haber podido actualizar este blog en casi dos semanas. No tengo excusa, la única es que son demasiadas cosas, demasiados blogs, demasiado trabajo… Intentaré robar tiempo al tiempo para escribir más a menudo en este blog, Aprendiendo PHP. Esa es mi intención. Y ahora, al tajo…

Las funciones son una parte muy importante en cualquier lenguaje de programación y PHP no es una excepción a ello, ni mucho menos! Definimos primero qué es una función: una función es como una pieza independiente del programa, una ‘entidad’ de código que está diseñada, mejor dicho, programada para realizar una determinada acción, como por ejemplo,  devolvernos la fecha del sistema. No es necesario que conozcamos ‘sus tripas’, el código que la conforma. Simplemente debemos saber para qué sirve y cómo llamarla.

En posts anteriores de Aprendiendo PHP ya hemos visto y utilizado algunas de ellas, como la función que he comentado en el párrafo anterior, la que nos devuelve la fecha y la hora de nuestro sistema: la función date(). Una función puede o no devolver un resultado, operando sobre unos valores, a los cuales denominamos argumentos o parámetros. Se construye con una palabra reservada del lenguaje seguida de paréntesis, los cuales pueden ir vacíos o con una enumeración de argumentos o parámetros, separados por comas. Posteriormente esos argumentos pueden sustituirse por los valores que queramos, siempre y cuando sean del mismo tipo de datos. Por cierto, nos queda pendiente el tema sobre el cambio de tipo de datos, lo sé…

PHP dispone de un buen número de funciones propias del lenguaje, pero además podemos crear las nuestras propias. Esto último lo veremos bastante más adelante. Primero, la base. De todas formas, conviene que le eches un vistazo al listado de todas sus funciones en su página oficial de PHP: funciones en PHP.

Comentaros también que una función puede que sólo efectúe una operación, como la obtención de la fecha y la hora que ya hemos visto. El resultado podremos imprimirlo en pantalla -con el constructor del lenguaje echo o print que también hemos utilizado mucho- o guardar el resultado en una variable para utilizarlo más adelante, tal vez en otra función.

Ahora vamos a ver todo esto que hemos explicado con un ejemplo de una función que calcula la raíz cuadrada de un número, el cual se lo pasamos a la función como un parámetro, siempre entre paréntesis. La función nos devolverá un resultado (a la variable la hemos llamado también $resultado) a través de la palabra reservada return. Luego, para mostrar en pantalla el resultado, creamos otra variable denominada $raiz_cuadrada a la cual asignamos la función con un valor de nuestra elección, un argumento. En el ejemplo siguiente vamos a utilizar el número 10 como argumento o parámetro. La función multiplicará 10 * 10 y guardará el valor en la variable $raiz_cuadrada. Después, simplemente mostramos el resultado en pantalla a través del constructor echo, la cual no es necesario que lleve los valores o argumentos entre paréntesis. Importante esta pequeña aclaración: echo y print no son verdaderas funciones. Os aconsejo que leáis la referencia del lenguaje al respecto: echo / print.

El ejemplo:

<?php
// Función para calcular el cuadrado de un número
# También podemos escribir el comentario de una línea con la almohadilla (#)
/* o escribir un comentario en varias líneas, sin problemas,
siempre y cuando las acotemos con estos signos que observas */ 

function calcula_cuadrado_numero ($numero) {
$resultado = $numero * $numero;
return $resultado;
}

echo ‘Vamos a mostrar el resultado de la operación realizada en la función <b>calcula_cuadrado_numero</b> sobre el argumento 10<br /><br />’;

$raiz_cuadrada = calcula_cuadrado_numero(10);
echo “La raíz cuadrada de 10 es: <b>$raiz_cuadrada</b>”; // fíjate que aquí hay comillas dobles porque en la sentencia de echo hay una variable incluida
?> Ejecutar ejemplo


Bien, hasta aquí la introducción. Más adelante volveremos a las funciones en PHP e iremos viendo las más importantes. Poco a poco…

Lecturas recomendadas:
Funciones internas en PHP (manual PHP.net)
Definición de función en programación (desarrolloweb.com)
Funciones en PHP (desarrolloweb.com) 

Concatenación de cadenas en PHP

[Operadores en PHP (V)]

La concatenación de cadenas o unión de strings en PHP se realiza mediante un punto (.): $texto= $texto2.$texto3. Ya hemos visto un ejemplo en el anterior post sobre los operadores de incremento y decremento. Así, el operador de concatenación es un punto entre cada una de las cadenas de texto -o variables que las representen- que queramos unir. La mejor forma de ver la concatenación de cadenas o strings  es con unos cuantos sencillos ejemplos:

<?php
$texto1= ‘Esto es’;
$texto2= ‘un string o cadena de texto’;
$texto3=$texto1.’ ‘.$texto2; // unimos las dos variables con el operador de concatenación: un punto y escribimos un espacio en blanco entre comillas simples para separar las dos frases
echo $texto3;
?>

También podemos incluir el espacio en blanco en la segunda cadena de texto ($texto2):

<?php
$texto1= ‘Esto es’;
$texto2= ‘ un string o cadena de texto’; // el espacio en blanco entre las dos cadenas lo escribimos directamente en el valor de $texto2
$texto1=$texto1.$texto2;
echo $texto1;
?>

Si tenemos una cadena en una variable y la otra no, lo mostraríamos de la siguiente forma:

<?php
$texto1= ‘Esto es una cadena de texto. ‘; // dejo un espacio en blanco después del punto de la frase
$texto2=$texto1 .’Y esta es la cadena de texto sin variable’;
echo $texto2;
?>
Ver ejemplo

En el código del ejemplo he querido utilizar código HTML para devolver el resultado en negrita (tags <b></b>): echo “<b>$texto1</b>”; Si lo hubiéramos escrito entre comillas simples, simplemente hubiéramos obtenido el texto literal $texto3, sin haberse interpretado la variable. Por ello, debemos tener siempre muy en cuenta que si queremos interpretar código dentro de la variable, tenemos que utilizar comillas dobles. Os dejo un recordatorio sobre la diferencia entre las comillas simples y las dobles en PHP:

  • Las variables no se escriben entre comillas
  • Si no vamos a utilizar variables dentro de la expresión, es mejor utilizar comillas simples, ya que devuelven el valor literal, sin interpretar nada
  • En el caso de que queramos recuperar el valor de una variable dentro de un texto, utilizaremos comillas dobles
  • Las comillas dobles indican que el contenido de la expresión debe ser interpretado


Enlaces recomendados:

http://www.mclibre.org/consultar/php/lecciones/php_cadenas1.html
http://www.tuwebdeinformatica.com/Crearwebs/php_mysql/variables_php.html
http://www.ignside.net/man/php/strings.php
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_PHP/Cadenas

Operadores de incremento y decremento en PHP

[Operadores en PHP (IV)]

Retomando los operadores aritméticos, vamos a ver en este post un tipo de operadores directamente relacionados con ellos: los operadores de incremento y decremento. Y la mejor forma de empezar es con un ejemplo:

<?php $a= $a + 1; $b= $b -1; ?>

Este mismo código expresado con los operadores de incremento y decremento se escribe así:

<?php $a++; // dos signos más (+) seguidos $b–; // dos signos menos (-) seguidos ?>

Lo más significativo es que hemos eliminado el operador de asignación, el símbolo igual (=), y hemos sustituido el nombre de la variable que se suma o resta por un signo más (+) o menos (-), respectivamente. Así, $a++; (++ es el operador de incremento) es lo mismo que $a= $a + 1; y b$–; es lo mismo que b$= $b – 1; (— es el operador de decremento).

Hay una cosa importante que debemos tener en cuenta: los operadores de incremento y decremento pueden anteceder o preceder a la variable, cambiando así el resultado de la operación. Es decir, no dará el mismo resultado la operación $a++ que la operación ++$a: situar el incremento antes de la variable (++$a) da prioridad al incremento (o decremento –, si fuera –$a). Un ejemplo para ver la diferencia:

<?php $a= 2; echo”El valor de la variable <b>a</b> es: 2<br />”; //mostramos el valor de la variable, que es 2 $a++; // incrementamos la variable en uno con el post-incremento, siendo ahora su valor 3. No lo mostramos echo”Ahora será: <b>”.++$a.”</b>”; // ahora la variable valdrá 4 (3 + 1), al haberse realizado primero el post-incremento ?> Ver ejemplo

En el próximo post trataremos la concatenación de cadenas, que ya hemos utilizado en el ejemplo: (echo”Ahora será: <b>”.++$a.”</b>”; ) y los cambios de tipo.

Enlaces útiles al respecto:
PHP.net: Operadores incremento y decremento (Manual oficial)
Operadores de incremento y decremento