• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

PHP中的函数:返回值和参数

函数是编程语言的重要组成部分。它们允许我们在不同的数据上一遍又一遍地运行相同的指令集,从而帮助我们避免代码重复。

在本教程中,我们将讨论 php 中的函数。我们将介绍 PHP 中函数的所有基本概念,您将学习如何在 PHP 中创建自己的用户定义函数。您将了解如何从 PHP 中的函数和函数参数返回值。您还将学习其他概念,例如设置默认参数值或通过引用传递参数。 

PHP 中的内部函数

PHP 带有许多可以在程序中使用的内置函数。其中一些函数是标准的,而其他函数则通过特定的 PHP 扩展提供给您。

PHP 附带了许多处理字符串的函数。例如,您可以使用该str_contains()函数来检查字符串是否包含子字符串,并使用该wordwrap()函数将字符串包装为给定数量的字符。这些功能可供您作为标准使用。

如果您安装了 GD 扩展库,则可以使用另一组用于处理图像的 PHP 函数。启用扩展后,您将能够使用 、 和 等功能imagecreatetruecolor()来imagecreatefrompng()创建imagefill() 和操作图像。

  • PHP中的函数:返回值和参数  第1张

如果您在 PHP 中遇到致命的未定义函数错误,但您确定它是一个内部函数,请确保您已安装相应的扩展以使用该函数。

PHP 中的用户定义函数

您还可以在 PHP 中定义自己的函数。几乎在您编写的每个重要程序中,定义自己的函数都成为必需品。它们是避免代码重复和错误的好方法。

下面是一些基本代码,用于定义一个函数,当我们稍后调用该函数时输出一个问候语。

<?php

function greet($name) {
    echo 'Hello '.$name.'!';
    echo 'Your name as '.strlen($name).' letters.';
}

greet('Andrew');
// Hello Andrew!
// Your name as 6 letters.


greet('Adam');
// Hello Adam!
// Your name as 4 letters.
?>

在上面的示例中,我们只是向greet()函数传递了一个名称,它会根据指定的名称回显不同的输出。

定义函数时必须遵循特定规则。函数的名称必须以字母或下划线开头。之后,您可以在名称中使用不同长度的数字、字母和下划线。这意味着greet01()、_greet()和greet_01()都是 PHP 中的有效函数名。但是,01_greet()用作函数名会引发语法错误。

从 PHP 中的函数返回

在前面的示例中,我们的用户定义greet()函数没有返回任何内容。它只是根据输入呼应了几句话。在 PHP 中定义的任何函数中返回任何内容完全取决于我们。

当你想返回一些东西时,你需要使用return语句。PHP 中的函数可以返回任何类型的值。这包括字符串、整数、浮点数、数组甚至对象。

<?php

function palindrome($word) {
    return $word.strrev($word);
}

$apple_palindrome = palindrome('apple');

// appleelppa
echo $apple_palindrome;

?>

在上面的示例中,该palindrome()函数通过将任何给定字符串附加到其反转版本来将其转换为回文。现在,我们不是直接回显输出,而是将其分配给一个变量。我们现在可以进一步操作该变量,但我们将在本例中回显它。

一个函数可以有多个返回值,一旦遇到return语句,函数的执行就会立即停止。这意味着您只能从函数中返回一个值。但是,您可以通过返回一个数组来解决此限制,该数组包含您要作为其元素返回的所有值。

<?php

function greet($name) {
    echo 'Hello '.$name.'!';
    return [$name, strtoupper($name), strlen($name)];
    echo 'Bye '.$name.'!';
}

list($name, $capital_name, $name_length) = greet('Monty');

echo 'Your name is '.$name.'.';
echo 'Your name is '.$capital_name.' in capitals.';
echo 'Your name is '.$name_length.' characters long.';

/*
Hello Monty!
Your name is Monty.
Your name is MONTY in capitals.
Your name is 5 characters long.
*/

?>

在上面的示例中,我们希望函数返回一堆有关传递给它的名称的信息。所以我们使用了一个混合值的数组。然后使用传递的值分配给不同的变量list()。

您还应该注意,该greet()函数没有回显Bye Monty!在我们的节目中。这是因为函数执行一遇到返回语句就停止了。

PHP中的函数参数

函数参数(也称为“函数参数”)用于将输入传递给函数,它可以根据该函数为我们提供所需的输出。到目前为止,在本教程中,我们只定义了具有单个参数的函数。

但是,要传递给函数的参数数量完全取决于我们。对于不需要我们任何类型输入的函数,它可以为零。它也可以是两个、三个、五个或十个。您还可以将数组作为参数传递。

这是分别接受零和两个参数的 PHP 函数的示例。

<?php

function day_date_time() {
    echo 'Today is '.date('l');
    echo 'The date is '.date('d F, Y');
    echo 'The time is '.date('h:i:s A');
}

day_date_time();

/*
Today is Monday
The date is 15 February, 2021
The time is 03:11:17 PM
*/

function greeting_time($name, $time) {
    echo 'Good '.$time.', '.$name.'!';
}

greeting_time('Adam', 'morning');
// Good morning, Adam!
?>

我们可以重写第二个函数来传递一个数组作为我们唯一的参数。我们将从函数内部的数组中提取不同的值。这在您想要操作数组或将大量值传递给函数的情况下会很有帮助。

<?php

function greeting_time_arr($input) {
    list($name, $time) = $input;
    echo 'Good '.$time.', '.$name.'!';
}

greeting_time_arr(['Andrew', 'morning']);
// Good morning, Andrew!
?>

指定默认参数值

假设您创建了一个问候功能,该功能主要用于向用户表示早安。$time我们函数中的值greeting_time()通常是早上。在这种情况下,您可以通过为特定参数分配合理的默认值来缩短程序并使代码更易于阅读。

这实际上在内置 PHP 函数中很常见。该strpos()函数用于查找字符串中子字符串的位置。该函数接受三个参数:字符串、子字符串和要开始的位置。该函数返回字符串中子字符串的索引。

position 参数是您要开始查找子字符串的点。通常,我们希望从起始位置查看主字符串内部。这意味着 offset 的值通常为零。

每次调用函数时,PHP 不会要求我们将偏移量指定为 0,而是将其值默认设置为 0。现在,当我们想要将偏移量更改为其他值时,我们只需要指定第三个参数。

我们还可以在我们自己的函数中为不同的参数设置一个默认值。这是一个例子:

<?php

function greeting_time($name, $time = 'morning') {
    echo 'Good '.$time.', '.$name.'!';
}

greeting_time('Monty');
// Good morning, Monty!

greeting_time('Monty', 'evening');
// Good evening, Monty!

?>

关于默认参数或实参,您需要记住两件事。首先,它们必须是一个常量值,就像我们的例子中的早晨一样。任何具有默认值的参数都应始终位于右侧。例如,下面的函数定义在第一次调用时会导致错误。

<?php

function greeting_time($time = 'morning', $name) {
    echo 'Good '.$time.', '.$name.'!';
}

greeting_time('Monty');
// Error
?>

错误的原因是参数Monty的含糊不清。PHP 无法知道您是否希望它成为默认值,$name或者您是否希望使用它来代替默认$time值。

按值传递参数与按引用传递

默认情况下,不同的参数按值传递给 PHP 函数。这样,我们可以避免更改传递给函数的参数的值。但是,如果您打算更改传递给 PHP 函数的参数值,则可以通过引用传递这些参数。

以下示例应该可以帮助您了解这两种方法之间的区别。

<?php

$word_a = 'apple';
$word_b = 'mango';

function v_palindrome($word) {
    $word = $word.strrev($word);
    return $word;
}

$palin_a = v_palindrome($word_a);

echo $word_a;
// apple
echo $palin_a;
// appleelppa

function r_palindrome(&$word) {
    $word = $word.strrev($word);
    return $word;
}

$palin_b = r_palindrome($word_b);

echo $word_b;
// mangoognam
echo $palin_b;
// mangoognam

?>

in 的参数r_palindrome()是通过引用传递的。这意味着当我们传递$word_b到时r_palindrome(),其$word_b自身的值变为回文。

结论

在本教程中,我们介绍了许多与 PHP 函数相关的基础知识。希望您现在可以编写自己的用户定义函数,利用我们在这里学到的一切。随时在评论中提出有关此主题的任何问题。


文章目录
  • PHP 中的内部函数
  • PHP 中的用户定义函数
  • 从 PHP 中的函数返回
  • PHP中的函数参数
  • 指定默认参数值
  • 按值传递参数与按引用传递
  • 结论