1

您好我有兴趣了解变量如何存储在 php 中。

说我有两个变量

$p = 1 + 1
$b = $p.

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

谢谢!

编辑:我认为最好澄清我在说什么。

说:

    function foo($something)
{

    for loop
        {
       echo 'Something';

       }

   return $something;
}


$b = foo(5);

echo $b;

从我遇到的只是分配值执行功能。当我回显 $b 时,它也会再次执行该功能。

4

2 回答 2

0

我希望我确实明白你真正想问的问题!

PHP(与任何其他语言一样)将值存储在变量中。不多也不少。所以问题是:什么是价值?:-)

在您给出的示例中,值(int)2存储在两者中,$p$b

您可以将函数存储在变量中,并且还有更多可能性。这更多的是你如何编码的问题,而不是 php 如何存储这样的东西:

$func = create_function('$a','return sprintf("*-%s-*", $a);');
echo $func('hello'); // will return "*-hello-*"

您还可以通过变量调用以永久方式存在的函数:

function echo_a($a) { return sprintf("*-%s-*", $a); }    
$func = 'echo_a';
echo call_user_func($func, 'hello'); // will return "*-hello-*"
于 2013-10-09T16:15:01.213 回答
0

所以你想知道你是否像这样分配

$a = function($arg){
    echo($arg);
}

$b = $a;

你会在内存中有重复的功能吗?

糟糕,原来我错了。PHP 使用写时复制机制,这使得两者都$b使用$a相同的内存缓冲区,除非这些变量中的任何一个被修改。

另一种可能性是你想知道当你做类似的事情时会发生什么

$a = 5; $b = 15;
$c = sin($b)*sqrt($a);

然后,只有这些计算的值会存储在内存中,仅此而已。

于 2013-10-09T16:13:28.913 回答