PHP学習まとめ機能

藏色散人
リリース: 2023-04-08 06:56:01
転載
2857 人が閲覧しました

関数定義

有効な関数名は文字またはアンダースコアで始まり、その後に文字、数字、またはアンダースコアが続きます。

関数名はサイズを区別しなくても構いません (実際には、 PHP 関数名、メソッド名、およびクラス名は大文字と小文字が区別されません);

関数が条件付きで定義されていない限り、呼び出す前に関数を定義する必要はありません;

PHP はサポートしていません関数のオーバーロードが発生するため、宣言された関数を定義解除したり再定義したりすることはできません。

<?php
Test(); # function test.
function test()
{
    echo &#39;function test.&#39;;
}
ログイン後にコピー

関数パラメータ

1. 値の転送

パラメータの値が関数内で変更されると、関数外のパラメータの値には影響しません:

<?php
$i = 1;
add($i);
echo $i; # 1
function add($test)
{
    $test++;
}
ログイン後にコピー

2. 参照渡し

関数内外でパラメータの値の一貫性を保ちます。参照渡しするには、関数定義のパラメータの前に記号 & を追加します:

<?php
$i = 1;
add($i);
echo $i; # 2
function add(&$test)
{
    $test++;
}
ログイン後にコピー

3. 可変数のパラメータ

PHP は変数をサポートしますパラメータの数。関数を定義するときにリストされるパラメーターは、実際には最小限のパラメーターにすぎません。呼び出し時には複数のパラメーターが許可されますが、追加のパラメーターは無視されます:

function add($a, $b) 
{
    return $a + $b;
}
echo add(1,2,5); # 3
ログイン後にコピー

PHP 5.5 以前のバージョンでは、パラメータの数が不確かな場合は、次の関数を使用できます。

func_num_args() — 関数に渡されるパラメータの数を返します

func_get_arg() — 指定されたパラメータを返します

func_get_args() — 引数リストを配列として返します

<?php
function func() 
{
    $argc = func_num_args();
    $argv = func_get_args();
    switch ($argc) {
       case 0:
           echo "没有参数。<br />";
           break;
       case 1:
           echo "只有1个参数。它是:" . func_get_arg(0) . "。<br />";
           break;
       case 2:
           echo "有2个参数。它们是:" . func_get_arg(0) . "," . func_get_arg(1) . "。<br />";
           break;
       default:
           echo "超过2个参数。它们是:";
           print_r($argv);
           break;
    }
}
func();          # 没有参数。
func(1);         # 只有1个参数。它是:1。
func(1,2);       # 有2个参数。它们是:1,2。
func(1,2,3,4,5); # 超过2个参数。它们是:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
ログイン後にコピー

PHP 5.6 以降では、可変数の引数リストが... 構文によって実装されます:

function sum(...$numbers) 
{
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}
echo sum(1, 2, 3, 4); # 10
ログイン後にコピー

Variable関数

PHP は変数関数の概念をサポートしています。変数名の後に括弧がある場合、PHP は変数の値と同じ名前の関数を探し、それを実行しようとします。

<?php
function foo() 
{
    echo "In foo()";
}
$func = &#39;foo&#39;;
$func(); # In foo()
ログイン後にコピー

注: 変数関数は、echo、print などの PHP の言語構造をサポートしません。

匿名関数

PHP では、クロージャ関数とも呼ばれる匿名関数を使用すると、名前を指定せずに関数を一時的に作成できます。コールバック関数で一般的に使用されるパラメータ:

<?php
print_r(array_map(function($value) {
    return $value * 2;
}, range(1, 5)));
# Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
ログイン後にコピー

クロージャ関数は変数の値としても使用できます:

$greet = function($name) {
    printf("Hello %s\r\n", $name);
};
$greet(&#39;World&#39;); # Hello World
ログイン後にコピー

クロージャは親スコープから変数を継承できます。このような変数は、 use 言語構造を使用して渡す必要があります:

<?php
$message = &#39;hello&#39;;
$example = function () use ($message) {
    echo $message;
};
$example(); # hello
ログイン後にコピー

使用中の変数のバインドを遅らせる必要がある場合は、参照を使用する必要があります。そうしないと、コピーが作成され、使用時に配置されます。は定義されています:

<?php
$result = 0;
 
$one = function() use ($result) { 
    var_dump($result); 
};
 
$two = function() use (&$result) { 
    var_dump($result); 
};
 
$result++;
 
$one();  # int(0)
$two();  # int(1)
ログイン後にコピー

動的関数呼び出し

PHP では、関数を直接呼び出すだけでなく、call_user_func() または call_user_func_array() を介して間接的に関数を呼び出すこともできます。関数:

<?php
function named_func($param1, $param2)
{
    echo "这是一个命名函数。参数是:$param1 和 $param2 。<br />";
}
call_user_func("named_func", "PARAM1", "PARAM2");
call_user_func_array("named_func", array("PARAM1", "PARAM2"));
ログイン後にコピー

以上がPHP学習まとめ機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート