En el ejemplo anterior en la función usabas una variable global, lo cual no es una buena práctica. Siempre es mejor utilizar argumentos o parámetros al hacer la llamada. Además, en lugar de mostrar el resultado en pantalla o guardar el resultado en una variable global, las funciones pueden devolver un valor usando la sentencia return
. Cuando en una función se encuentra una sentencia return
, termina su procesamiento y devuelve el valor que se indica.
Puedes reescribir la función anterior de la siguiente forma:
<?php
function precioConIva($precio){
return $precio * 1.18;
}
$precio = 10;
$precioIva = precioConIva($precio);
echo "El precio con IVA es $precioIva";
?>
Los argumentos se indican en la definición de la función como una lista de variables separada por comas. No se indica el tipo de cada argumento, al igual que no se indica si la función va a devolver o no un valor (si una función no tiene una sentencia return
, devuelve null
al finalizar su procesamiento).
Al definir la función, puedes indicar valores por defecto para los argumentos, de forma que cuando hagas una llamada a la función puedes no indicar el valor de un argumento; en este caso se toma el valor por defecto indicado.
<?php
function precioConIva($precio, $iva=0.18) {
return $precio * (1 + $iva);
}
$precio = 10;
$precioIva = precioConIva($precio); //al no especificar tomará el valor 0.18
echo "El precio con IVA es $precioIva";
?>
<?php
function precioConIva($precio, $iva=0.18) {
return $precio * (1 + $iva);
}
$precio = 10;
$precioIva = precioConIva($precio, 0.23); //ahora $iva=0.23
echo "El precio con IVA es $precioIva";
?>
Puede haber valores por defecto definidos para varios argumentos, pero en la lista de argumentos de la función todos ellos deben estar a la derecha de cualquier otro argumento sin valor por defecto.
En los ejemplos anteriores los argumentos se pasaban por valor. Esto es, cualquier cambio que se haga dentro de la función a los valores de los argumento no se reflejará fuera de la función. Si quieres que esto ocurra debes definir el parámetro para que su valor se pase por referencia, añadiendo el símbolo & antes de su nombre.
<?php
function precioConIva(&$precio, $iva=0.18) {
$precio *= (1 + $iva);
}
$precio = 10;
echo "El precio con IVA es $precio";
?>