Php:在for()循环中创建函数
有人知道我如何编写一个函数,能够创建其他函数,使用变量的内容作为它的名称吗 下面是我在php中谈论的一个基本示例:Php:在for()循环中创建函数,php,c,Php,C,有人知道我如何编写一个函数,能够创建其他函数,使用变量的内容作为它的名称吗 下面是我在php中谈论的一个基本示例: function nodefunctioncreator() { for ($i =1, $i < 10, $i++) { $newfunctionname = "Node".$i; function $newfunctionname() { //code for each of the func
function nodefunctioncreator()
{
for ($i =1, $i < 10, $i++)
{
$newfunctionname = "Node".$i;
function $newfunctionname()
{
//code for each of the functions
}
}
}
函数nodefunctioncreator()
{
对于($i=1,$i<10,$i++)
{
$newfunctionname=“节点”。$i;
函数$newfunctionname()
{
//每个函数的代码
}
}
}
有人知道允许我这样做的语言吗?您可以使用
示例:
$newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo "New anonymous function: $newfunc\n";
echo $newfunc(2, M_E) . "\n";
// outputs
// New anonymous function: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599
示例源代码:php.net您可以使用动态创建函数。您可以使用在php中创建匿名函数。您可以将每个匿名函数分配给变量
$newfunctionname
,并使用以下命令执行它:
我认为这是PHP中最接近的一种方式,看起来不像是完全的黑客行为
我认为不可能直接从变量定义函数。这样做对我来说也不太好,因为这些函数会污染名称空间。如果匿名函数不起作用,这就需要一种面向对象的方法。为什么要这样做 在Javascript中,这也是可能的:
function nodefunctioncreator(){
var o = {};
for(var i = 1, i < 10, i++) {
o["Node" + i] = function(){
//code for each of the functions
}
}
return o;
}
函数nodefunctioncreator(){
var o={};
对于(变量i=1,i<10,i++){
o[“节点”+i]=函数(){
//每个函数的代码
}
}
返回o;
}
调用函数时返回一个包含函数Node1、Node2等的对象。。。Node9什么都做不好。如果您使用的是PHP5.3,您可以使用lambdas:
for ($i=0;$i<10;$i++) {
$funcName = 'node'.$i;
$$funcName = function ($something) {
// do something
}
}
$node7('hello');
<代码> >($i=0;$i)几乎所有的动态语言都支持这一点。例如,LISP,Stand和SimultAcess。编译的语言如C和C++几乎从来没有做过。但是,您可以在所有(大多数)动态语言JavaScript、Python等中这样做。这在PHP中是必需的。
for ($i=0;$i<10;$i++) {
$funcName = 'node'.$i;
$$funcName = function ($something) {
// do something
}
}
$node7('hello');