Inicio

viernes, 19 de agosto de 2011

Funciones de cadenas

La función substr() permite leer parte de una cadena de texto y toma como mínimo dos parámetros: la cadena a analizar y el punto desde donde queremos que comienze a leer.
Sintáxis: substr ( string $string , int $start [, int $length ] )
Ejemplo:
<?php
$rest1 = substr("Enrique", -1);    // devuelve "e"
$rest2 = substr("Enrique", -2);    // devuelve "ue"
$rest3 = substr("Enrique", -3, 1); // devuelve "q"

echo $rest1 ."<br>";
echo $rest2 ."<br>";
echo $rest3;
?>





La función chr() toma una función ASCII y devuelve el carácter equivalente. La función ord() hace exactamente lo contrario.
Ejemplo:
<?php
echo (chr(69));
?>
 

La función strlen() devuelve la longitud de la cadena que se ha utilizado como argumento:
<?php
 echo "Enrique tiene ". strlen(Enrique)." letras.";
?>

 

Función Rand()

Para generar números aleatorios se puede usar esta función que lleva como argumentos opcionales el número más bajo y el más alto. Así si desea generar números entre el 1 y el 49 podría ejecutar el siguiente código:
<?php
echo "Combinación para apuesta: <br>";
echo rand(1,49) . "\n";
echo rand(1,49) . "\n";
echo rand(1,49) . "\n";
echo rand(1,49) . "\n";
echo rand(1,49) . "\n";
echo rand(1,49) . "\n";
?>

Si no le damos argumentos a la función esta generará números entre el 0  y el por defecto: getrandmax() que es el 32768.
Otra función opcional a la descrita es mt_rand ( int $min , int $max ), que genera números aleatorios de una forma más rápida y fiable.

FUNCIONES II (Parámetros)

Como ya comenté en un anterior post, las librerías de funciones en PHP son unos de los mejores recursos que tenemos en este lenguaje.
Hemos definido cómo es la sintáxis de una función, y hemos hecho mención a los parámetros. Los parámetros (o argumentos) son variables y/o constantes que establecen una "comunicación" entre partes del código, y que se tratarán como variables locales dentro de la función. Es posible que la lista de parámetros de una función esté vacía, es decir, que no aparezca ningún parámetro dentro de los paréntesis ().

PHP admite pasar valores por valor o por referencia. Esto que quiere decir:

Cuando creás una variable y le asignámos un valor tenemos dos cosas:

- el valor asignado
- la dirección de memoria en la que se almacena dicho valor.

La variable en realidad no contiene datos, sino que "sabe" la dirección de memoria en la que esos datos están almacenados.

Así, cuando se pasa por valor se copian los datos: se toman de la memoria y se almacenan en otro lugar, luego se asigna a la variable la referencia a esos nuevos datos.

Y cuando se pasa por referencia se copia, justamente, la referencia a la posición de memoria. Así, como la variable de la función apunta a la misma memoria, apunta a los mismos datos y por lo tanto puede modificar la variable original.

Supongamos que tenés la variable

$x = 5;

y la pasás a una función

mi_funcion($x);

Si el paso es por valor, la función tendrá una firma como la siguiente

function mi_funcion($parametro)

Y al momento de ejecutarse se creará la variable $parametro, a la que se asignará el valor de $x. Es decir, los datos almacenados en la dirección de memoria a la que apunta $x serán copiados a otra posición de memoria, y a esa nueva posición apuntará $parametro.

Si el paso es por referencia, la función tiene una firma como esta:

function mi_funcion(&$parametro)

Esto implica que al momento de ejecutarse la función, tanto $x como $parametro terminan apuntando a los mismos datos (claro está, $parametro solamente existe mientras la función se ejecuta). Normalmente la función no puede modificar la variable original, pero sí puede hacerlo si el paso es por referencia.

Este procedimiento para pasar parámetros por referencia desde la llamada de la función ha quedado en desuso y provocará Warnings en las configuraciones por defecto de PHP. 

martes, 16 de agosto de 2011

Funciones

Podría decirse que las funciones son el aspecto más atractivo y poderoso de PHP. De hecho existen más de 700 funciones predefinidas que se pueden agrupar en las siguientes categorías:

Para crear una función en PHP emplearemos la sintáxis siguiente:
function functionName()
{
código a ejecutar;
}


Es aconsejable nombrar la función con una palabra que identifique adecuadamente lo que hace. Podemos emplear con una letra incluso con guión bajo, pero no con números. En el siguiente ejemplo definimos una función que escribe mi nombre cuando la invoco:

html>
<body>
<?php
//defino la función
function minombre()
{
echo "Enrique Manuel Cabello Portero";
}
//llamada a la función
echo "Hola me llamo ";
minombre();
?>
</body>
</html>

Adicionalmente y, al objeto de darle más funcionalida ,podemos añadirle parámetros a nuestras funciones. 
Veamos otro ejemplo en el que calculamos el factorial de 4.
<?php
function factorial($n) {

if ($n<0) {
return "Sólo se puede calcular con números positivos";
}
else if ($n==0)
return 1;
else {
$a=1;
for($i=2 ;$i<=$n;$i++) {
$a=$a*$i;
}
return $a;
}
}
echo " El factorial de 4 se escribe 4! y es igual a ".factorial(4)
?>
En principio evaluamos la posibilidad que se intoduzca como parámetros el 0 o un número negativo. Posteriormente y, valiendonos de un bucle for realizamos la operación matemática.  Observe que cuando la función ha de devolver una cadena debe hacerlo con la expresión return.


Estructuras repetitivas For...each

"Por cada", literalmente es lo que significa. Con lo que es fácil de intuir la manera de ejecutarse el bucle, cuya sintáxis es la siguiente:
foreach ($array as $value)
  {
código a ejecutar;
  }
Por ejemplo el siguiente programa nos presenta por pantalla el nombre de tres personas usando este bucle:
<html>
<body>

<?php
$x=array("Pepe","Luis","Ana");
foreach ($x as $value)
  {
  echo $value . "<br />";
  }
?>

</body>
</html> 





Otro ejemplo:
<?php

// array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
foreach (range(0, 12) as $numero) {
    echo $numero;
}

// El parametro paso fue introducido en 5.0.0
// array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
foreach (range(0, 100, 10) as $numero) {
    echo $numero;
}

// Uso de secuencias de caracteres introducidas en 4.1.0
// array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i');
foreach (range('a', 'i') as $letra) {
    echo $letra;
}
// array('c', 'b', 'a');
foreach (range('c', 'a') as $letra) {
    echo $letra;
}
?>

lunes, 15 de agosto de 2011

Estructuras repetitivas Do,,,while

La estructura do...while recorre las instrucciones del bucle hasta que o mientras no se cumpla la condición, que le hayamos señalado. Ejemplo:
Este código funcionará hasta que la variable i deje ser menor que 10.
<?php
$i = 0;
echo 'Este código correrá al menos una vez ya que i=0.<br/>';
do {
echo 'El valor de i es ' . $i . '. <br/>';
++$i;
} while ($i < 10);
?>