Funciones
Función
Una función es un grupo de instrucciones que realiza una tarea, estas instrucciones están agrupadas en un mismo bloque, el cual puede ser llamado desde cualquier parte del código.
Esto hace que no tengamos que repetir un cierto código cada vez que queramos realizar la misma tarea, ya que basta con hacer una llamada a la función y esta se ejecuta.
Hay dos tipos de funciones, las que podemos crear nosotros mismos y las predefinidas.
PHP dispone de muchas funciones ya predefinidas, es decir, tareas que son habituales en programación, y para las cuales hay ya una función prefabricada, en este caso lo único que tenemos que hacer es llamar a la función para que esta se ejecute.
Esto lo hemos visto ya en páginas anteriores, hemos visto funciones predefinidas para ordenar arrays, o para crear ficheros, o para otra serie de tareas.
La forma de llamar a una función predefinida, tal como hemos hecho en las páginas anteriores, es escribiendo su nombre y luego un paréntesis. El paréntesis puede llevar o no argumentos o parámetros, es decir, una serie de datos que hay que pasarle a la función, necesarios para obtener un resultado.
Definir funciones
Podemos definir o crear nuestras propias funciones, para ello usaremos el siguiente código:
function nombreFuncion($argumento1,$argumento2) {
instrucciones de la función ...;
return $resultado
}
Veamos cuales son los elementos del código anterior:
- function: empezaremos poniendo esta palabra clave.
- nombreFuncion: Después le daremos un nombre a la función, podemos escribir aquí cualquier palabra, y este será el nombre que tenga la función.
- (): Escribimos luego los paréntesis, y dentro de ellos los argumentos, en caso de que sean necesarios.
- $argumentos: Son los datos necesarios para poder ejecutar la función, por ejemplo una función que realice la suma de dos números, necesitará que le pasemos como argumentos esos dos números. Una función puede necesitar o no argumentos, por lo que no es obligatorio ponerlos si no es necesario. Si necesita más de un argumento, estos se pondrán separados por comas. El argumento puede ser cualquier variable, la cual la utilizaremos dentro de la función para operar con ella y obtener el resultado.
- {Instrucciones}: Entre llaves pondremos las instrucciones que hagan falta para ejecutar la función.
- return : Podemos hacer que la función de directamente el resultado, o que lo devuelva al programa, en este caso utilizaremos la palabra clave return seguido de la variable que contiene el resultado. Esta se pone siempre al final de las instrucciones y antes de cerrar la llave.
Ejemplos de aplicación de funciones
Veamos un ejemplo sencillo de una función para sumar dos números: Escribimos primero un formulario en el que pedimos al usuario que nos dé dos números:
<form action="#" method="post">
<p>Escribe dos números:
Primer número: <input type="text" name="n1" /> ...
Segundo número: <input type="text" name="n2" />
<p><input type="submit" value="mostrar resultado" />
</form>
Después en código php escribimos primero la función que suma los dos números, después pasamos los dos números a la función y mostramos el resultado en pantalla.
function suma($a,$b) {
$c=$a+$b;
return $c;
}
$n1=$_POST['n1'];
$n2=$_POST['n2'];
$n3=suma($n1,$n2);
echo "Sumar: $n1 + $n2 =$n3";
Vamos a explicar algunas cosas de este código:
- Los argumentos: Las variables que pasamos al llamar a la función ($n1,$n2) no tienen porqué llamarse igual que las que las que hay al definir la función ($a,$b), simplemente tienen que estar en el mismo orden, de manera que la primera variable de la definición ($a) toma el valor de la primera variable que pasamos ($n1), la segunda variable de la definición ($b) toma el valor de la segunda que le pasamos ($n2) y así sucesivamente.
- La instrucción return: Para recoger en una variable ($n3) el resultado de la función, (return), asignamos a esa variable la llamada a la función, $n3=suma($n1,$n2);. $n3 recoge el valor de la variable $c pasada por la instrucción return.
Funciones de cadenas I.
Como ya se ha dicho, en PHP, además de las funciones creadas por el usuario, existen múltiples funciones para realizar distintas tareas. Todas ellas están ya predefinidas, por lo que lo único que tenemos que hacer es llamarlas, pasarles los parámetros necesarios, y ellas realizan la tarea.
Para poder usarlas debemos conocer, el nombre de la función, los parámetros que debemos pasar, y por supuesto saber que tarea realizan.
Funciones generales para cadenas de texto
Estas funciones, y las que veremos en los siguientes apartados, no alteran los argumentos que les pasamos, por lo que para obtener el resultado debemos guardarlas siempre en otra variable.
$resultado=nombreFuncion($argumentos);
strlen($texto);
Esta función cuenta el número de caracteres de una cadena. Su resultado es el número de caracteres que tiene la cadena pasada en el argumento $texto.
chr(num);
En esta función pasamos como parámetro un número entre 0 y 255, y el resultado es el caracter asignado a ese número en el código ASCII. ASCII es un código muy usado en programación, que asocia cada letra, signo o caracter con un número. Consta de 256 signos diferentes, si bien los 31 primeros no se corresponden con un carácter, sino con otras funciones tales como controles, escape, tabuladores, etc.
ord("caracter");
Es la función contraria a la anterior. pasamos como parámetro un caracter o signo, y la función nos devolverá el número en ASCII de ese carácter. Si pasamos como argumento más de un caracter o una cadena de texto, la función nos devolverá únicamente el código ASCII del primer carácter.
count_chars($texto,modo);
Esta función indica cuales son los caracteres en código ASCII que aparecen en el texto y/o cuantas veces aparece cada uno de ellos. En $texto pasamos como argumento la cadena a analizar, y en modo escribiremos un número del 0 al 4. Según el modo la función devolverá un array o una cadena. El comportamiento de los distintos modos es el siguiente.
- Modo 0: Devuelve un array asociativo con todos los caracteres del código ASCII. En la clave aparece el número del caracter en ASCII, y en el valor indica el número de veces que se repite ese caracter.
- Modo 1: Devuelve un array asociativo con únicamente los caracteres que aparecen en el texto. La clave nos da el número del carácter en ASCII, y el valor es el número de veces que se repite ese carácter.
- Modo 2: Devuelve un array asociativo con los caracteres del código ASCII que no aparecen en el texto. La clave es el número de carácter, y el valor es siempre igual a 0, ya que éste es el número de veces que aparecen.
- Modo 3: Devuelve una cadena de texto en la que aparecen los caracteres que contiene el texto. Estos aparecen una sola vez (aunque estén repetidos), y ordenados según el código ASCII.
- Modo 4: Devuelve una cadena de texto en la que aparecen los caracteres del código ASCII que no aparecen en el texto, ordenados según este código.
str_word_count($texto,modo);
Esta función diferencia las palabras del texto y permite hacer varias operaciones según el modo. En el argumento $texto, pasamos el texto a analizar, y en modo pondremos los números, 0, 1 ó 2. Dependiendo del modo la función dará los siguientes resultados:
- Modo 0: Devuelve el número de palabras que contiene el $texto.
- Modo 1: Devuelve un array indexado con todas las palabras que contiene el $texto.
- Modo 2: Devuelve un array asociativo donde la clave indica en qué número de caracter de la cadena comienza la palabra (empieza a contar desde 0), y el valor es la palabra en sí.
substr_count($texto,$subcadena);
Devuelve un número que indica las veces que una determinada $subcadena (carácter, palabra, etc.) aparece dentro de una cadena de texto $texto.
strpos($texto,"caracter");
Devuelve un número que indica la primera posición del "caracter" pasado en el segundo argumento, dentro de la cadena $texto pasado como primer argumento.
Si el carácter indicado en el segundo argumento no está en la cadena devolverá el valor boleano FALSE, representado por una cadena vacía.
Si en lugar de un carácter en el segundo argumento pasamos una cadena, comprobará si esta cadena (subcadena) está incluida en la cadena principal,y nos devolverá el número donde comienza la subcadena.
strrpos($texto,"caracter");
Funciona de forma análoga a la anterior, sólo que el número que devuelve es el de la última posición del "caracter" dentro de la cadena $texto.
stripos($texto,"caracter");
Funciona igual que la función strpos() pero sin tener en cuenta la diferencia entre mayúsculas y minúsculas.
strripos($texto,"caracter");
Funciona igual que la función strrpos() pero sin tener en cuenta la diferencia entre mayúsculas y minúsculas.
Cadenas de texto y arrays.
Las principales funciones que relacionan las variables de cadenas y los arrays son:
explode("separador",$texto);
Separa los elementos de un texto devolviendolos en un array. En "separador" se indican uno o varios caracteres dónde se debe hacer la partición del texto para definir los distintos elementos del array. $texto es la variable que contiene el texto que se convertirá en array.
Por ejemplo, $palabras=explode(" ",$texto);, separará el texto en sus diferentes palabras, las cuales serán los elementos del array $palabras. De igual modo,$caracteres=explode("",$texto);, separará el texto en sus diferentes caracteres.
El carácter o caracteres incluidos en "separador". se eliminan del texto, de manera que si separamos palabras, el espacio en blanco que había entre ellas no está en los elementos del array.
implode("elemento_union",$array);
Convierte un array en cadena de texto. Es la función contraria a explode(), Como segundo argumento debemos pasar un array $array, El array se transforma en cadena, y el primer argumento "elemento_union"es una cadena de 0, 1, o varios carecteres, que aparecerá escrita entre cada elemento del array.
Esta función es muy útil para ver los elementos que contiene un array, mediante:$verArray=implode(",",$array);
join("elemento_union",$array);
Convierte un array en cadena de texto. Esta función es exactamente igual que la anterior, los argumentos que pasamos son los mismos y funciona de igual manera.
chunk_split($texto,num_caracteres);
Devuelve un array en el que cada elemento consiste en un trozo de la cadena pasada en el primer argumento ($texto), de tantos caracteres como el número indicado en el segundo argumento (num_caracteres).
Funciones de cadenas II
Son aquellas que modifican el texto, dando como resultado otra cadena.
Cambiar Mayúsculas y minúsculas:
strtoupper($texto);
Devuelve la cadena de texto pasada en el argumento $texto con todas sus letras en mayúsculas.
strtolower($texto);
Devuelve la cadena de texto pasada en el argumento $texto con todas sus letras en minúsculas.
ucwords($texto);
Devuelve la cadena de texto pasada en el argumento $texto con la primera letra de cada palabra pasada a mayúsculas, siempre que ésta sea un carácter alfabético.
ucfirst($texto);
Devuelve la cadena de texto pasada en el argumento $texto con la primera letra de la cadena en mayúsculas, siempre que ésta sea un carácter alfabético.
Eliminar y remplazar texto.
str_replace($buscar,$remplazar,$texto);
Esta función es particularmente útil para remplazar una palabra o trozo de texto por otro, ya que dentro del texto indicado en el tercer argumento $texto, busca los trozos que coinciden con la cadena indicada en el primer argumento, $buscar, y los sustituye por la cadena indicada en el segundo argumento $remplazar.
Si en el segundo argumento $remplazar indicamos una cadena vacia "", lo que hará la función es eliminar del $texto los trozos coincidentes con $buscar.
str_ireplace($buscar,$remplazar,$texto);
Esta función es igual que la anterior, pero no tiene en cuenta las diferencias entre letras mayúsculas y minúsculas.
substr($texto,comienzo,longitud);
Devuelve una parte de la cadena pasada en el primer argumento $texto. El segundo argumento es un número que indica en que carácter empieza la cadena devuelta, y el tercero indica su longitud.
El tercer argumento longitud es opcional, y si no se indica, la cadena devuelta llegará hasta el final de la cadena original.
Los caracteres de la cadena empiezan a contarse desde el número 0, al igual que en los arrays, de forma que el primer carácter tiene el número 0, el segundo el 1, y asi sucesivamente. Esto hay que tenerlo en cuenta al poner el segundo argumento comienzo.
Si en comienzo ponemos un número mayor que la longitud de la cadena, la función devolverá "false".
Si en comienzo ponemos un número negativo, los caracteres empezarán a contarse desde el final de la cadena, de forma que si ponemos por ejemplo -20, la cadena devuelta serán los 20 últimos caracteres de la cadena original ($texto).
substr_replace($texto,$sustituir,comienzo,longitud);
Devuelve la cadena pasada en el primer argumento $texto, en la cual se sustituye un texto por otro. El texto nuevo se indica en el segundo argumento $sustituir El tercer argumento indica el comienzo del texto sustituido (viejo) y el cuarto su longitud, ambos argumentos deben ser números que indican la posición del carácter (tercero) y la cantidad de caracteres a sustituir.
Al igual que en la función anterior, si no se indica el argumento longitud, se entiende que ésta es hasta el final de la cadena; los caracteres se empiezan a contar desde el 0; y si ponemos en comienzo un número negativo, empezaremos a contar desde el final de la cadena.
str_pad($texto,largo,$relleno,tipo_relleno);
Alarga la cadena de texto $texto hasta la longitud indicada en largo, para ello se utiliza la cadena indicada en $relleno.
Es decir, si queremos que una cadena ocupe más espacio del que tiene, alargándola, por, ejemplo, mediante puntos o guiones, en el argumento $relleno escribiremos ese carácter, con lo cual se alargará la cadena hasta la longitud indicada.
El cuarto argumento tipo_relleno es opcional, indica en que lado de la cadena queremos que aparezcan los caracteres de relleno, podemos poner tres valores: STR_PAD_RIGHT los caracteres de relleno aparecerán por la derecha, es la opción por defecto; STR_PAD_LEFT, el relleno aparece a la izquierda; y STR_PAD_BOTH, el relleno aparece repartido a ambos lados de la cadena.
ltrim($texto,"lista_caracteres");
Modifica el texto pasado en el primer argumento, $texto: elimina los primeros caracteres del $texto, si éstos están en la lista del segundo argumento, "lista_caracteres".
rtrim($texto,"lista_caracteres");
Modifica el texto pasado en el primer argumento, $texto: elimina los últimos caracteres del $texto, si éstos están en la lista del segundo argumento, "lista_caracteres".
trim($texto,"lista_caracteres");
Modifica el texto pasado en el primer argumento, $texto: elimina tanto los primeros caracteres como los últimos del $texto, si éstos están en la lista del segundo argumento,"lista_caracteres".
strtr($texto,"lista_1","lista_2");
Modifica el texto pasado en $texto, de manera que sustituye los caracteres de "lista1"por los de "lista2". El primer caracter indicado en "lista1" es sustituido por el primero de "lista2", el segundo de "lista1" es sustituido por el segundo de "lista2", y así sucesivamente. Si alguna de las listas es más larga que la otra, los caracteres sobrantes se ignoran.
Otras funciones de cadena:
chunk_split($texto,num,"caracter");
Devuelve la misma cadena del primer argumento $texto en la cual cada cierto número de caracteres indicado en el segundo argumento num, se incluye el texto indicado en el tercer argumento: "caracter".
str_repeat($texto,num);
Devuelve el texto pasado en el primer argumento, $texto, repetido el numero de veces indicado en el segundo argumento, num.
strrev($texto);
Devuelve la cadena pasada en el argumento $texto invertida, (de derecha a izquierda).
htmlspecialchars($texto);
Devuelve la misma cadena pasada $texto, en la cual se han traducido al lenguaje HTML ciertos caracteres especiales que necesitan escribirse de manera distinta en HTML. Estos son: & = &; " = "; < = <; > = >.
htmlentities($texto);
Devuelve la misma cadena pasada $texto, en la cual se han traducido al lenguaje HTML todos los caracteres especiales que se escriben de manera distinta en HTML. Nótese que a diferencia de la anterior, que sólo traduce 4 caracteres, ésta función devuelve también la conversión de otros caracteres, como pueden ser las vocales con acento o la letra ñ.
strip_tags($texto,"etiq_permitidas");
Elimina todas las etiquetas de HTML y PHP que haya en el texto del primer argumento. El segundo argumento es opcional e indica cuales son las etiquetas permitidas, (que no se eliminarán), estas deben indicarse entre los signos < ... >.
Funciones matemáticas
Las funciones matemáticas son aquellas que nos permiten hacer variaciones y operaciones con los números. Si bien hemos visto los operadores matemáticos, hay una serie de operaciones complejas, tales como los logaritmos, cálculo de raíz cuadrada, potenciación, razones trigonométricas, etc. que requieren el uso de estas funciones.
Por otra parte hay una serie de números un tanto especiales, o simplemente muy usados por los matemáticos, los cuales en PHP se puede acceder a ellos mediante una serie de constantes matemáticas.
Constantes matemáticas.
Estos son una serie de números, tales como el número PI (cálculo de la circunferencia), o el número e (base de los logaritmos naturales), etc, que son muy usados en matemáticas. Las principales constantes matemáticas son las siguientes:
Funciones de cálculo
Estas funciones permiten hacer ciertas operaciones algo más complejas que las que nos permiten los operadores.
pow(base,exp);
Potenciación: Eleva el número indicado en base (base de la potencia), al número indicado en exp (exponente).
sqrt(num);
Raíz cuadrada: calcula la raiz cuadrada del número pasado como argumento.
log(num,base);
Logaritmo: Devuelve el resultado del logaritmo para el primer argumento. El segúndo argumento es opcional, e indica la base del logaritmo. Si no se expecifica el logaritmo sera en base e (logaritmo natural).
log10(num);
Logaritmo en base 10: Devuelve el resultado del logaritmo en base 10 para el argumento pasado.
decbin(num);
Conversión a binario: Convierte el número pasado en el argumento en número binario (en base 2).
bindec(num);
Conversión a decimal: Función contraria a la anterior. Le pasamos un número binario en el argumento y lo convierte a decimal.
decoct(num);
Conversión a octal: Convierte el número pasado en el argumento en número octal (en base 8).
dechex(num);
Conversión a hexadecimal: Convierte el número pasado en el argumento en número hexadecimal (en base 16).
base_convert(num,base1,base2);
Conversión de una base a otra: Convierte el número pasado en el argumento, el cual se toma escrito en la base base1, a la base especificada en base2. Tanto base1 como base2 deben ser números comprendidos entre el 2 y el 36, ambos inclusive. Para los caracteres de los números en bases mayores que 10, se usarán las letras minúsculas del alfabeto, de forma que a=10, b=11, etc.
max(array);
Maximo valor: Devuelve el valor más alto de todos los que se le pasan en una lista, la lista de números puede pasársele en forma de array o pasar los números directamente como varios argumentos.
min(array);
Mínimo valor: Devuelve el valor más bajo de todos los pasados en una lista, los cuales pueden pasársele en forma de array o pasarlos directamente como varios argumentos.
Redondeo y valor absoluto
abs(num);
Valor absoluto: devuelve el valor absoluto del número pasado como argumento, es decir, siempre positivo, sin tener en cuenta el signo.
round(num,precision);
Redondeo: Redondea el número pasado en el primer argumento al entero más cercano cuando no especificamos el segundo argumento. El segundo argumento es opcional, e indica el número de decimales que queremos que tenga el número redondeado. Si este número es negativo se redondeará a entero convirtiendo las últimas cifras en ceros.
ceil(num);
Redondeo al alza: Redondea el número pasado en el argumento al siguiente entero inmediatamente superior.
floor(num);
Redondeo a la baja: Redondea el número pasado en el argumento al número entero inmediatamente inferior.
number_format(num,decimales,"sep_decimal","sep_miles")
Formato de números: Define cómo se debe presentar el número en pantalla, podemos poner 1, 2, o 4 parámetros, (pero no 3), si ponemos sólo el primero el número se mostrará tal cual es; si ponemos el primero y el segundo se mostrará con el número de decimales indicado en el segundo. Si ponemos los 4 el tercero indica cual es el signo que se debe emplear para separar los decimales (coma, punto u otro), y el cuarto el signo para separar los miles (signo que separa la parte entera en grupos de 3: punto, espacio blanco, coma, etc.).
Funciones trigonométricas.
Las funciones trigonométricas son aquellas que relacionan la circunferencia con el radio, o los tres lados de un triángulo rectángulo con sus ángulos.
Los ángulos pueden medirse en grados o en radianes. En grados, una circunferencia tiene 360°; y en radianes, un radian es la distancia de un radio, por lo que la circunferencia tiene 2PI radianes, es decir, aproximadamente 6.283 radianes.
Las funciones trigonométricas usan como medida de ángulo los radianes, los argumentos que les pasemos, cuando correspondan a ángulos, deben ser en radianes, por lo que antes de ver cuales son las funciones trigonométricas, es importante saber las funciones que nos permitirán cambiar la forma de medir los ángulos:
deg2rad(grados);
Conversión grados a radianes: Convierte el número pasado en el argumento a radianes.
rad2deg(rad);
Conversión radianes a grados: Convierte el número pasado en el argumento a grados.
Veamos ahora cuáles son las principales funciones trigonométricas: como hemos dicho antes, los números pasados como argumentos, cuando son medidas de ángulos, deben ser pasados en radianes.
sin(num);
Seno; Calcula el seno del ángulo pasado en el argumento.
cos(num);
Coseno; Calcula el coseno del ángulo pasado en el argumento.
tan(num);
Tangente; Calcula la tangente del ángulo pasado en el argumento.
asin(num);
Arco-seno; Calcula el arco seno del numero pasado en el argumento. el número que devuelve está expresado en radianes.
acos(num);
Arco-coseno; Calcula el arco coseno del numero pasado en el argumento. el número que devuelve está expresado en radianes.
atan(num);
Arco-tangente; Calcula el arco tangente del numero pasado en el argumento. el número que devuelve está expresado en radianes.
No hay comentarios.:
Publicar un comentario