Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于PHP中的内存和变量赋值_Php_Variables_Memory_Variable Assignment - Fatal编程技术网

关于PHP中的内存和变量赋值

关于PHP中的内存和变量赋值,php,variables,memory,variable-assignment,Php,Variables,Memory,Variable Assignment,我以前也问过类似的问题,但我真的不清楚,所以我决定用一个更具体的例子 php是保存变量的结果还是保存过程以运行它?为什么我想知道我是否在其中存储了一个函数,它是存储返回值还是只是复制过程 说: 根据我遇到的情况,赋值执行函数。这是我不想要的,因为我不想经历两次for循环,也不想做两次内部可能发生的事情。PHP是一个函数,这意味着表达式总是被完全计算的。线路 $b = foo(5); 计算赋值前foo(5)的值;当使用变量$b时,PHP不会将其作为待评估的变量 如果您想,您可以通过创建闭包来实现

我以前也问过类似的问题,但我真的不清楚,所以我决定用一个更具体的例子

php是保存变量的结果还是保存过程以运行它?为什么我想知道我是否在其中存储了一个函数,它是存储返回值还是只是复制过程

说:

根据我遇到的情况,赋值执行函数。这是我不想要的,因为我不想经历两次for循环,也不想做两次内部可能发生的事情。

PHP是一个函数,这意味着表达式总是被完全计算的。线路

$b = foo(5);
计算赋值前
foo(5)
的值;当使用变量
$b
时,PHP不会将其作为待评估的变量

如果您想,您可以通过创建闭包来实现类似于thunk的效果,如下所示:

$b = function() { return foo(5); };
在需要它的值之前,它不会计算
foo(5)
,然后要获得该值,必须将闭包调用为
$b()

PHP是a,这意味着表达式总是被完全计算的。线路

$b = foo(5);
计算赋值前
foo(5)
的值;当使用变量
$b
时,PHP不会将其作为待评估的变量

如果您想,您可以通过创建闭包来实现类似于thunk的效果,如下所示:

$b = function() { return foo(5); };
在需要它的值之前,它不会计算
foo(5)
,然后要获得该值,必须将闭包调用为
$b()

,在PHP中,这两个都可以(存储结果或函数的代码)

如果你写:

function foo()
{
    return 5;
}
$a = foo();
$a = function()
{
    return 5;
};
$a();
这意味着-执行函数foo并将结果存储到$a中

如果你写:

function foo()
{
    return 5;
}
$a = foo();
$a = function()
{
    return 5;
};
$a();
这意味着-将函数的代码存储到变量$a中,然后在PHP中执行存储在$a中的函数,您可以同时拥有这两个变量(存储结果或函数代码)

如果你写:

function foo()
{
    return 5;
}
$a = foo();
$a = function()
{
    return 5;
};
$a();
这意味着-执行函数foo并将结果存储到$a中

如果你写:

function foo()
{
    return 5;
}
$a = foo();
$a = function()
{
    return 5;
};
$a();

这将意味着-将函数的代码存储到变量$a中,然后执行存储在$a中的函数

我不想经历两次for循环,并做两次内部可能发生的事情。
--您能解释一下吗?当您运行此行时,您并不是在“将函数存储在其中”:$b=foo(5);“--您正在运行一个名为foo的函数,其参数为5,并将返回值存储在一个名为$b的变量中。
我不想重复for循环,并对其内部的内容执行双倍操作。
--您可以解释一下吗?当您运行此行时,您并没有“在其中存储函数:$b=foo(5);”--您正在运行一个名为foo、参数为5的函数,并将返回值存储在一个名为$b的变量中。如果该函数存储在一个对象中,该怎么办?就像我想让$a=object->function,但不想马上执行它一样。你甚至可以将函数名存储在variable中,并通过call_user_func(数组($obj,'functionme'),$a)调用它,如果函数存储在一个对象中,请查看更多内容?就像我想让$a=object->function,但不想马上执行它一样。你可以将函数名存储在变量中,并通过call_user_func(数组($obj,'functionme'),$a)调用它,更多信息请访问