English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico de PHP

Tutorial avanzado de PHP

PHP & MySQL

Manual de referencia de PHP

Funciones de PHP

En este tutorial, aprenderá cómo crear sus propias funciones personalizadas en PHP.

Funciones integradas de PHP

Las funciones son bloques de código independientes que ejecutan tareas específicas.

PHP tiene una gran colección de funciones integradas que puede llamar directamente en su script PHP para ejecutar tareas específicas, como: gettype(), print_r(), var_dump, etc.

Consulte la sección de referencia de PHP para obtener una lista completa de funciones integradas útiles en PHP.

Funciones definidas por el usuario en PHP

Además de las funciones integradas, PHP también permite que defina sus propias funciones. Esta es una manera de crear paquetes de código reutilizable para tareas específicas, y puede guardarse y mantenerse separado del programa principal. A continuación se presentan algunos beneficios del uso de funciones:

  • Las funciones reducen la repetición del código en el programa - Las funciones te permiten extraer bloques de código comunes a un solo componente. Ahora, puedes llamar a esta función en cualquier lugar del script para ejecutar la misma tarea, sin necesidad de copiar y pegar el mismo bloque de código repetidamente.

  • Las funciones facilitan la mantenimiento del código - Dado que una función puede crearse una vez y utilizarse múltiples veces, cualquier cambio realizado dentro de la función se implementará automáticamente en todos los lugares, sin necesidad de modificar varios archivos.

  • Las funciones facilitan la eliminación de errores - Al dividir el programa en funciones, si ocurre algún error, sabrás exactamente qué función causó el error y dónde encontrarla. Por lo tanto, corregir errores se vuelve mucho más fácil.

  • Puedes reutilizar la funcionalidad en otras aplicaciones - Dado que las funciones están separadas del resto del script, puedes reutilizar fácilmente la misma funcionalidad en otras aplicaciones simplemente incluyendo el archivo php que contiene estas funciones.

La próxima sección te mostrará cómo definir fácilmente tus propias funciones en PHP.

Crear y llamar funciones

La sintaxis básica para crear una función personalizada puede darse:

function functionName() { 
    //Código a ejecutar
}

La declaración de una función definida por el usuario comienza con la palabra function, seguida del nombre de la función a crear, seguido de paréntesis, es decir, () y finalmente colocando el código de la función entre llaves { }.

Este es un ejemplo simple de una función definida por el usuario que muestra la fecha de hoy:

<?php
//Definir una función
function whatIsToday() {
    echo "Hoy es " . date('l', mktime());
}
//调用函数
whatIsToday();
?>
Prueba y mira‹/›

Atención:El nombre de la función debe comenzar con una letra o carácter de subrayado y no con un número, y puede seguirse por más letras, números o caracteres de subrayado. El nombre de la función no distingue entre mayúsculas y minúsculas.

Función con parámetros

Puedes especificar parámetros cuando defines una función para recibir valores de entrada en tiempo de ejecución. La forma en que los parámetros funcionan es similar a las variables de reemplazo en la función; se les proporciona valores (llamados parámetros) en tiempo de ejecución.

function myFunc($oneParameter, $anotherParameter) { 
    //Código a ejecutar
}

Puedes definir tantos parámetros como necesites. Sin embargo, para cada parámetro que especifiques, debes pasar el parámetro correspondiente a la función al llamarla.

La función getSum() en los ejemplos siguientes toma dos valores enteros como parámetros, simplemente sumándolos y mostrando el resultado en el navegador.

<?php
//Definir una función
function getSum($num1, $num2){
  $sum = $num1 + $num2;
  echo "dos números$num1y $num2la suma es: $sum";
}
 
//调用函数
getSum(10, 20);
?>
Prueba y mira‹/›

上面代码的输出将是:

两个数字10和20的和是 : 30

Consejo:参数是您传递给函数的值,参数是函数中接收参数的变量。但是,在通常用法中,这些术语是可以互换的,即参数是自变量。

具有可选参数和默认值的函数

您也可以创建带有可选参数的函数 - 只需插入参数名称,后跟等号(=),然后是默认值,如下所示。

<?php
//Definir una función
function customFont($font, $size=1.5){
    echo "Hello, world!

"; }   //调用函数 customFont("Arial", 2); customFont("Times", 3); customFont("Courier"); ?>
Prueba y mira‹/›

正如您可以看到的,对 customFont ()的第三个调用不包括第二个参数。这将导致 PHP 引擎使用 $size 参数的默认值,即1.5.

从函数返回值

函数可以使用return语句将值返回给调用该函数的脚本。该值可以是任何类型,包括数组和对象。

<?php
//Definir una función
function getSum($num1, $num2){
    $total = $num1 + $num2;
    return $total;
}
 
//打印返回值
echo getSum(5, 10); // Salida: 15
?>
Prueba y mira‹/›

一个函数不能返回多个值。但是,您可以通过返回一个数组来获得类似的结果,如以下示例所示。

<?php
//Definir una función
function divideNumbers($dividend, $divisor){
    $quotient = $dividend / $divisor;
    $array = array($dividend, $divisor, $quotient);
    return $array;
}
 
//将变量作为数组进行赋值
list($dividend, $divisor, $quotient) = divideNumbers(10, 2);
echo $dividend;  // Salida: 10
echo $divisor;   // Salida: 2
echo $quotient;  // Salida: 5
?>
Prueba y mira‹/›

通过引用将参数传递给函数

在PHP中,有两种方式可以将参数传递给函数:按值传递和通过引用传递。 默认情况下,函数参数按值传递,因此如果函数内的参数值发生更改,它不会受到函数外部的影响。 但是,要允许函数修改其参数,它们必须通过引用传递。

El método de paso de parámetros por referencia es agregar un y (&) al nombre del parámetro en la definición de la función, como se muestra en el siguiente ejemplo:

<?php
/* Definir una función que multiplica un número
y devolver un nuevo valor */
function selfMultiply(&$number){
    $number *=
    return $number;
}
 
$mynum = 5;
echo $mynum; // Salida: 5
 
selfMultiply($mynum);
echo $mynum; // Salida: 25
?>
Prueba y mira‹/›

Entender el alcance de la variable

Se puede declarar una variable en cualquier lugar del script PHP. Sin embargo, el lugar de la declaración determina el rango de visibilidad de la variable en el programa PHP, es decir, dónde se puede usar o acceder a la variable. Esta accesibilidad se llamaAlcance de la variable.

Por defecto, las variables declaradas dentro de una función son variables locales y no se pueden acceder o operar con ellas desde el exterior de la función, como se muestra en el siguiente ejemplo:

<?php
//Definir una función
function test(){
    $greet = "Hello World!";
    echo $greet;
}
 
test(); // Salida: Hello World!
 
echo $greet; //Generar error de variable no definida
?>
Prueba y mira‹/›

Del mismo modo, si se intenta acceder o importar una variable externa desde dentro de la función, se obtendrá un error de variable no definida, como se muestra en el siguiente ejemplo:

<?php
$greet = "Hello World!";
 
//Definir una función
function test(){
    echo $greet;
}
 
test();  //Generar error de variable no definida
 
echo $greet; // Salida: Hello World!
?>
Prueba y mira‹/›

Como se puede ver en el ejemplo anterior, no se puede acceder a las variables declaradas dentro de una función desde el exterior, y, de manera similar, no se puede acceder a las variables declaradas fuera de la función desde dentro. Esta separación reduce las oportunidades de que las variables dentro de la función sean afectadas por las variables del programa principal.

Consejo:Se puede usar el mismo nombre para las variables en diferentes funciones, ya que las variables locales solo pueden ser identificadas por la función que las declara.

Palabra clave global

En algunos casos, es necesario importar variables del programa principal a la función, y viceversa. En este caso, se puede usar la palabra clave global antes de las variables dentro de la función. Esta palabra clave convierte la variable en una variable global, haciendo que sea visible o accesible tanto dentro como fuera de la función, como se muestra en el siguiente ejemplo:

<?php
$greet = "Hello World!";
 
//Definir una función
function test(){
    global $greet;
    echo $greet;
}
 
test(); // Salida: Hello World!
echo $greet; // Salida: Hello World!
 
//Asignar un nuevo valor a la variable
$greet = "Goodbye";
 
test(); // Salida: Goodbye
echo $greet; // Salida: Goodbye
?>
Prueba y mira‹/›

Usted encontraráClases y objetos en PHPEn este capítulo se puede obtener más información sobre la visibilidad y el control de acceso.

Crear una función recursiva

Una función recursiva es una función que se llama a sí misma una y otra vez hasta que se cumpla una condición. Las funciones recursivas se utilizan generalmente para resolver cálculos matemáticos complejos o para manejar estructuras profundamente anidadas, como, por ejemplo, imprimir todos los elementos de un array anidado en profundidad.

El siguiente ejemplo muestra cómo funciona una función recursiva.

<?php
//Definir función recursiva
function printValues($arr) {
    global $count;
    global $items;
    
    //Verifica si $arr es un array
    if(!is_array($arr)){
        die("ERROR: La entrada no es un array");
    }
    
    /*
        Recorre el array, si value es un array, realiza una llamada recursiva
        La función agrega los valores encontrados al array de elementos de salida
        y suma el contador para cada valor encontrado1
    */
    foreach($arr as $a){
        if(is_array($a)){
            printValues($a);
        } else {
            $items[] = $a;
            $count++;
        }
    }
    
    //Devuelve el recuento total y los valores del array
    return array('total' => $count, 'values' => $items);
}
 
//Definir array anidado
$species = array(
    "aves" => array(
        "Águila",
        "Pájaro",
        "Cisne"
    ),
    "mamíferos" => array(
        "Hombre",
        "gato" => array(
            "León",
            "Tigre",
            "Jaguar"
        ),
        "Elefante",
        "Mono"
    ),
    "reptiles" => array(
        "serpiente" => array(
            "Cobra" => array(
                "Cobra real",
                "Cobra egipcia"
            ),
            "Vipera",
            "Anaconda"
        ),
        "Cocodrilo",
        "Dinosaurio" => array(
            "T-rex",
            "Alamosaurus"
        )
    )
);
 
//Calcular e imprimir los valores de los arrays anidados
$result = printValues($species);
echo $result['total'] . ' valor(es) encontrado(s): ';
echo implode(', ', $result['values']);
?>
Prueba y mira‹/›

Atención:Cuidado al crear funciones recursivas, ya que si el código se escribe incorrectamente, puede causar bucles infinitos en las llamadas a la función.