1

在学习 Zend 测试时,我遇到了这个有效的代码,但我不知道为什么在 array_push 中有两个奇怪的道具。strtolower 和 ucfirst 用于应该有变量的地方。我错过了一些文件吗?

<?php
    $str = 'MY STRING';

    $funcs = array();

    array_push($funcs, 'strtolower', 'ucfirst');

    foreach ($funcs as $func) {
        $str = $func($str);
    }

    if ($str == 'My string') {
        echo "Correct";
    }
    else {
        echo "Incorrect";
    }
?>
4

2 回答 2

2

PHP 支持变量函数的概念。这意味着如果一个变量名附加了括号,PHP 将寻找一个与该变量计算结果相同的名称的函数,并尝试执行它。除其他外,这可用于实现回调、函数表等。

来源: http: //php.net/manual/en/functions.variable-functions.php

于 2015-12-09T16:35:42.907 回答
1

有趣的部分发生在这里:

$str = $func($str);

这是一个变量函数- 数组中列出的函数(通过 array_push)在字符串输入上被调用。

于 2015-12-09T16:36:33.500 回答