PHP 的复杂函数篇 -- PHP 学习 (六)

2019-04-21  本文已影响0人  无故下架内容so账号已弃用

可变函数

通过变量名来执行函数:

<?php
    function get_apple($nums) {
        return '我需要'.$nums.'斤 apple';
    }

    $get_fruit = 'get_apple';

    echo $get_fruit(200); // => 我需要200斤 apple
?>

通过传递的变量名来执行对应的函数:

<?php
    function get_apple($nums) {
        return '我需要'.$nums.'斤 apple';
    }

    function get_orange($nums) {
        return '我需要'.$nums.'斤 orange';
    }

    function get_fruit($fruit, $nums) {
        $str = 'get_'.$fruit;
        return $str($nums);
    }

    echo get_fruit('apple', 200); // => 我需要200斤 apple

    echo '<br />';

    echo get_fruit('orange', 30); // => 我需要30斤 orange
?>

嵌套函数

<?php
    function out() {
        echo 'out';
        function in() {
            echo 'in';
        }
    }

    // in(); // 如果直接调用in 报错, 需要先调用 out 再调用 in

    out(); // => out

    echo '<br />';

    in(); // => in

    echo '<br />';

    out(); // 再次调用 out 报错
?>

上面的例子中, 如果直接调用in 报错, 需要先调用 out 再调用 in:

如果我们想再次调用 out, 程序会报错, 这是我们需要加入判断,
function_exists(): 判断函数有没有被定义,
看下面的例子:

<?php
    function out() {
        echo 'out';
            if (!function_exists('in')) {
                function in() {
                    echo 'in';
                }
            }
    }

    // in(); // 如果直接调用in 报错, 需要先顶用 out 再调用 in

    out(); // => out

    echo '<br />';

    in(); // => in

    echo '<br />';

    out(); // => out

    echo '<br />';

    in(); // => in
?>

递归函数

求 N!:

<?php
    function recursive ($n) {
        if ($n < 0) {
            return 0;
        }
        $total = 1;
        echo "当前参数: {$n}".'<br />';
        if ($n === 1) {
            echo "\$n={$n}, \$total={$total}".'<br />';
            return 1;
        } else {
            $total = $n * recursive($n -1); // 调用自身
        }
        echo "\$n={$n}, \$total={$total}".'<br />';
        return $total;
    }

    echo recursive(4);
?>
N! 结果

匿名(闭包函数)

<?php
    $example = function ($name) {
        echo $name;
    };

    $example('guoyou'); // => guoyou
?>

作为 callback

<?php
    function closure ($name, Closure $callback) {
        echo "Hi, {$name}, ";
        $callback();
    }

    closure('guoyou', function () {
        echo '欢迎登陆';
    }); // => Hi, guoyou, 欢迎登陆
?>

函数代码复用

详细内容看: PHP 的 include require include/require_once -- PHP 学习 (七)

参考资料:
https://www.imooc.com/learn/827

上一篇下一篇

猜你喜欢

热点阅读