Home  >  Article  >  Backend Development  >  PHP recursion, static variables, anonymous function use

PHP recursion, static variables, anonymous function use

WBOY
WBOYOriginal
2016-08-08 09:20:411012browse

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Current To-Do List</title>
</head>
<body>
<?php
    function make_list($parent) {
        global $tasks;
        echo '<ol>';

        foreach($parent as $task_id => $todo) {
            echo "<li>$todo";

            if (isset($tasks[$task_id])) { // 如果当前id有子任务则递归创建菜单
                make_list($tasks[$task_id]);
            }

            echo "</li>";
        }

        echo '</ol>';
    }

    $db = mysqli_connect('192.168.31.172' ,'root', 'root', 'phpadvanced');
    mysqli_query($db, "set names utf8");
    $q = 'SELECT task_id, parent_id, task FROM tasks WHERE date_completed="0000-00-00 00:00:00" ORDER BY parent_id, date_added ASC';
    $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 '<pre class="brush:php;toolbar:false">'.print_r($tasks,1).'
'; make_list($tasks[0]); //把包含顶级任务的数组发送给它, 最顶级的parent_id是0 ?>
<?php
// create the array.
// Array structs
// StudentId = > ["name" => "Name", "grade" => xx.x];

$students = [
    256 => ['name' => 'Jon', 'grade' => '98.5'],
    2 => ['name' => 'Vance', 'grade' => '85.1'],
    9 => ['name' => 'Stephen', 'grade' => '94.0'],
    364 => ['name' => 'Steve', 'grade' => '85.1'],
    68 => ['name' => 'Rob', 'grade' => '74.6'],
];

function name_sort($x, $y) {
    static $count = 1;
    echo "<p>Iteration $count: {$x['name']} vs. {$y['name']} </p>\n";
    $count ++;
    return strcasecmp($x['name'], $y['name']);
}

function grade_sort($x, $y) {
    static $count = 1;
    echo "<p>Iteration $count: {$x['grade']} vs. {$y['grade']}</p>\n";
    $count++;
    return $x['grade'] < $y['grade'];
}

echo print_r($students, 1);
uasort($students, 'name_sort'); //保持键并使用自定义排序
echo print_r($students, 1);
uasort($students, 'grade_sort');
echo print_r($students, 1);
?>
<?php

// create the array.
// Array structs
// StudentId = > ["name" => "Name", "grade" => xx.x];

$students = [
    256 => ['name' => 'Jon', 'grade' => '98.5'],
    2 => ['name' => 'Vance', 'grade' => '85.1'],
    9 => ['name' => 'Stephen', 'grade' => '94.0'],
    364 => ['name' => 'Steve', 'grade' => '85.1'],
    68 => ['name' => 'Rob', 'grade' => '74.6'],
];

echo print_r($students, 1);
uasort($students, function($x, $y){
    return strcasecmp($x['name'], $y['name']);
}); //保持键并使用自定义排序
echo print_r($students, 1);
uasort($students, function($x, $y){
    return $x['grade'] < $y['grade'];
});
echo print_r($students, 1);
?>
<?php
function increment(&$i) {
    $i++;
}
$num = 2;
increment($num);
echo $num;

?>

The above introduces the use of PHP recursion, static variables, and anonymous functions, including aspects of it. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:php-preg-1Next article:php-preg-1