ホームページ バックエンド開発 PHPチュートリアル PHP 再帰、静的変数、匿名関数の使用

PHP 再帰、静的変数、匿名関数の使用

Dec 07, 2016 pm 04:01 PM

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>Current To-Do List</title>
</head>
<body>
<?php
    function make_list($parent) {
        global $tasks;
        echo &#39;<ol>&#39;;
        foreach($parent as $task_id => $todo) {
            echo "<li>$todo";
            if (isset($tasks[$task_id])) { // 如果当前id有子任务则递归创建菜单
                make_list($tasks[$task_id]);
            }
            echo "</li>";
        }
        echo &#39;</ol>&#39;;
    }
    $db = mysqli_connect(&#39;192.168.31.172&#39; ,&#39;root&#39;, &#39;root&#39;, &#39;phpadvanced&#39;);
    mysqli_query($db, "set names utf8");
    $q = &#39;SELECT task_id, parent_id, task FROM tasks WHERE date_completed="0000-00-00 00:00:00" 
    ORDER BY parent_id, date_added ASC&#39;;
    $r = mysqli_query($db, $q);
    $tasks = array();
while (list($task_id, $parent_id, $task) = mysqli_fetch_array($r, MYSQLI_NUM)) {
    $tasks[$parent_id][$task_id] = $task;
}
//echo &#39;<pre class="brush:php;toolbar:false">&#39;.print_r($tasks,1).&#39;
'; make_list($tasks[0]); //把包含顶级任务的数组发送给它, 最顶级的parent_id是0 ?>
ログイン後にコピー

静的変数統計コード

<?php
// create the array.
// Array structs
// StudentId = > ["name" => "Name", "grade" => xx.x];
$students = [
    256 => [&#39;name&#39; => &#39;Jon&#39;, &#39;grade&#39; => &#39;98.5&#39;],
    2 => [&#39;name&#39; => &#39;Vance&#39;, &#39;grade&#39; => &#39;85.1&#39;],
    9 => [&#39;name&#39; => &#39;Stephen&#39;, &#39;grade&#39; => &#39;94.0&#39;],
    364 => [&#39;name&#39; => &#39;Steve&#39;, &#39;grade&#39; => &#39;85.1&#39;],
    68 => [&#39;name&#39; => &#39;Rob&#39;, &#39;grade&#39; => &#39;74.6&#39;],
];
function name_sort($x, $y) {
    static $count = 1;
    echo "<p>Iteration $count: {$x[&#39;name&#39;]} vs. {$y[&#39;name&#39;]} </p>\n";
    $count ++;
    return strcasecmp($x[&#39;name&#39;], $y[&#39;name&#39;]);
}
function grade_sort($x, $y) {
    static $count = 1;
    echo "<p>Iteration $count: {$x[&#39;grade&#39;]} vs. {$y[&#39;grade&#39;]}</p>\n";
    $count++;
    return $x[&#39;grade&#39;] < $y[&#39;grade&#39;];
}
echo print_r($students, 1);
uasort($students, &#39;name_sort&#39;); //保持键并使用自定义排序
echo print_r($students, 1);
uasort($students, &#39;grade_sort&#39;);
echo print_r($students, 1);
?>
ログイン後にコピー

匿名関数 - クロージャコード

<?php
// create the array.
// Array structs
// StudentId = > ["name" => "Name", "grade" => xx.x];
$students = [
    256 => [&#39;name&#39; => &#39;Jon&#39;, &#39;grade&#39; => &#39;98.5&#39;],
    2 => [&#39;name&#39; => &#39;Vance&#39;, &#39;grade&#39; => &#39;85.1&#39;],
    9 => [&#39;name&#39; => &#39;Stephen&#39;, &#39;grade&#39; => &#39;94.0&#39;],
    364 => [&#39;name&#39; => &#39;Steve&#39;, &#39;grade&#39; => &#39;85.1&#39;],
    68 => [&#39;name&#39; => &#39;Rob&#39;, &#39;grade&#39; => &#39;74.6&#39;],
];
echo print_r($students, 1);
uasort($students, function($x, $y){
    return strcasecmp($x[&#39;name&#39;], $y[&#39;name&#39;]);
}); //保持键并使用自定义排序
echo print_r($students, 1);
uasort($students, function($x, $y){
    return $x[&#39;grade&#39;] < $y[&#39;grade&#39;];
});
echo print_r($students, 1);
?>
ログイン後にコピー

パラメータを参照渡し、データがビッグデータの場合に使用され、データコードのコピーをコピーする必要はありません

<?php
function increment(&$i) {
    $i++;
}
$num = 2;
increment($num);
echo $num;
?>
ログイン後にコピー

上記はPHPですrecursion 、静的変数、匿名関数で使用されるコンテンツ、その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C++ 匿名関数の使用法と特徴 C++ 匿名関数の使用法と特徴 Apr 19, 2024 am 09:03 AM

ラムダ式とも呼ばれる匿名関数は、名前を指定せず、1 回限りの使用または関数ポインターを渡すために使用される関数です。機能には、匿名性、ワンタイム使用、クロージャ、戻り値の型推論が含まれます。実際には、ソートやその他の 1 回限りの関数呼び出しによく使用されます。

Golang関数における匿名関数適用シナリオの分析 Golang関数における匿名関数適用シナリオの分析 May 16, 2023 pm 10:51 PM

最新のプログラミング言語として、Golang (Go 言語とも呼ばれる) には多くの強力な機能があります。その中でも匿名関数はGolangにおいて非常に重要な概念であり、様々なシーンで広く使われています。この記事では、Golang 関数の匿名関数の適用シナリオを深く分析します。イベント ハンドラー イベント ハンドラーでは、匿名関数は非常に便利で実用的なツールです。カスタム ロジックは、funcmain(){bt などの匿名関数を通じてイベント ハンドラーに渡すことができます。

PHP7 の匿名関数とクロージャを使用して、より柔軟なコード ロジック処理を実現するにはどうすればよいですか? PHP7 の匿名関数とクロージャを使用して、より柔軟なコード ロジック処理を実現するにはどうすればよいですか? Oct 21, 2023 am 10:21 AM

PHP7 の匿名関数とクロージャを使用して、より柔軟なコード ロジック処理を実現するにはどうすればよいですか? PHP7 より前は、関数を使用して特定のロジック部分をカプセル化し、コード内でこれらの関数を呼び出して特定の関数を実装することがよくありました。ただし、コード内に一時的なロジック ブロックを定義する必要がある場合があります。これらのロジック ブロックは独立した関数を作成する必要がなく、同時にコードにあまりにも多くのグローバル変数を導入したくありません。 PHP7 では、この問題をうまく解決できる匿名関数とクロージャが導入されています。無名関数とは名前のない関数です

Golang の匿名関数は複数の値を返すことができますか? Golang の匿名関数は複数の値を返すことができますか? Apr 13, 2024 pm 04:09 PM

はい、Go 言語の匿名関数は複数の値を返すことができます。構文: func(arg1,arg2,...,argN)(ret1,ret2,...,retM){//関数本体}。使用法: 戻り値を受け取るには := 演算子を使用し、複数の値を返すには return キーワードを使用します。

PHP7 の匿名関数とクロージャを使用して、より柔軟で再利用可能なコード ロジックを実現するにはどうすればよいでしょうか? PHP7 の匿名関数とクロージャを使用して、より柔軟で再利用可能なコード ロジックを実現するにはどうすればよいでしょうか? Oct 24, 2023 am 10:30 AM

PHP7 の匿名関数とクロージャを使用して、より柔軟で再利用可能なコード ロジックを実現するにはどうすればよいでしょうか? PHP プログラミングの世界では、匿名関数とクロージャは非常に貴重で強力なツールです。 PHP7 では、匿名関数とクロージャをより便利かつ柔軟に使用できるようにするいくつかの新しい言語機能が導入されています。この記事では、PHP7 の匿名関数とクロージャを使用して、より柔軟で再利用可能なコード ロジックを実現する方法を紹介し、いくつかの具体的なコード例を示します。 1. 無名関数 無名関数とは、名前のない関数です。 PHPでは匿名を使用できます

PHP8.0の匿名関数 PHP8.0の匿名関数 May 14, 2023 am 08:31 AM

PHP8.0 は、PHP プログラミング言語の最新バージョンです。重要な更新の 1 つは、匿名関数の改善と機能強化です。匿名関数 (クロージャとも呼ばれます) は、実行時に動的に作成して他の関数に渡したり、変数に格納したりできる特殊なタイプの関数です。 PHP では、匿名関数は高度なプログラミングや Web 開発にとって重要です。 PHP8.0 は、匿名関数をより柔軟で使いやすくする新しい構文と機能をいくつか提供します。更新内容の一部は次のとおりです: PHP8.0 の関数パラメータの型宣言、

Python ラムダ式: プログラミングを簡単にする Python ラムダ式: プログラミングを簡単にする Feb 19, 2024 pm 09:54 PM

Python のラムダ式は、式を変数に格納し、その値を返す小さな匿名関数です。ラムダ式は、別の関数を作成することで実行できる単純なタスクを実行するためによく使用されますが、ラムダ式を使用すると、コードがより簡潔で読みやすくなります。 Lambda 式の構文は次のとおりです。 lambdaarguments:expressionarguments は Lambda 式によって受け取られるパラメータ リストで、expression は実行する必要があるコードを含む Lambda 式の本体です。たとえば、次のラムダ式は 2 つの数値を加算し、その合計を返します: lambdax,

ラムダ式と匿名関数の違いは何ですか? ラムダ式と匿名関数の違いは何ですか? Apr 17, 2024 pm 03:18 PM

ラムダ式と匿名関数はどちらも Python で匿名関数を作成する方法ですが、違いがあります。代入方法: ラムダ式は関数を返します。使用する変数には無名関数を代入する必要があります。コードの複雑さ: ラムダ式には式を 1 つだけ含めることができますが、匿名関数には複数のステートメントを含めることができます。

See all articles