美文网首页
PHP 的复杂函数篇 -- PHP 学习 (六)

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

作者: 无故下架内容so账号已弃用 | 来源:发表于2019-04-21 23:54 被阅读0次

可变函数

  • 定义:
    变量名后有圆括号, PHP 将寻找与变量的值同名的函数, 并且尝试执行它;

通过变量名来执行函数:

<?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 嵌套函数有一些特别之处, 最特别的是, 当外部函数被调用时, 内部函数就会自动进入全局域中, 成为新的定义函数
<?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!, 输出一个树层级结构等

求 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! 结果

匿名(闭包函数)

  • 定义:
    匿名函数 (Anontmous functions), 也叫闭包函数 (closures), 允许临时创建一个没有指定名称的函数. 最经常用作回调函数 (callback) 参数的值.

  • 闭包函数可以作为变量的值来使用

<?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, 欢迎登陆
?>

函数代码复用

  • include:
  • require:
  • include_once:
  • require_once:

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

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

相关文章

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

    可变函数 定义:变量名后有圆括号, PHP 将寻找与变量的值同名的函数, 并且尝试执行它; 通过变量名来执行函数:...

  • 三. PHP与MySQL关系大揭秘

    PHP内置MySQL函数学习(1) PHP内置MySQL函数学习(2) PHP内置MySQL函数学习(2)

  • PHP中一些函数方法

    php自定义函数之递归函数 php自定义函数之静态变量 php​ 使用系统内置函数 亚麻跌”是PHP学习时间处理的...

  • PHP学习总结

    PHP自学计划记录 当前只学习了PHP的基础语法,没有涉及很多PHP内部提供的函数 学习目录:PHP自学计划-注释...

  • 前言

    第一篇:基础知识 基础知识篇通过PHP入门搭建PHP的开发环境。php语言基础、流程控制语句、表达式、php函数、...

  • PHP参考手册

    PHP参考手册 PHP array() 函数 PHP array_change_key_case()函数 PHP ...

  • PHP 学习笔记(一)

    为了拓展知识面,学习了一些PHP的相关知识,汇总、分享。 PHP --- 字符串函数 PHP 常量 PHP--- ...

  • 2018 10 19

    继续学习常用php原生函数

  • Yii2 PHP框架

    自动加载函数 Yii2 PHP框架学习记录--自动加载函数 常量 Yii2 PHP框架学习记录-常量 $_SERV...

  • 搜藏经典

    PHP 16个魔术方法 PHP 数组函数 PHP 字符串函数 PHP 超全局变量 PHP 面向对象的理解以及三大特...

网友评论

      本文标题:PHP 的复杂函数篇 -- PHP 学习 (六)

      本文链接:https://www.haomeiwen.com/subject/djylgqtx.html