PHP中变量和内存的工作原理
您好,我很想了解php中变量的存储方式 假设我有两个变量PHP中变量和内存的工作原理,php,memory,variable-assignment,Php,Memory,Variable Assignment,您好,我很想了解php中变量的存储方式 假设我有两个变量 $p = 1 + 1 $b = $p. php是保存变量的结果还是保存过程以运行它? 我想知道的是我是否在其中存储了一个函数,它是存储返回值还是只是复制过程 谢谢大家! 编辑:我想我最好澄清一下我在说什么 说: 根据我遇到的情况,赋值执行函数。当我回显$b时,它也会再次执行该函数。那么,如果这样赋值,您想知道什么 $a = function($arg){ echo($arg); } $b = $a; 你的内存中有功能的副本吗
$p = 1 + 1
$b = $p.
php是保存变量的结果还是保存过程以运行它?
我想知道的是我是否在其中存储了一个函数,它是存储返回值还是只是复制过程
谢谢大家!
编辑:我想我最好澄清一下我在说什么
说:
根据我遇到的情况,赋值执行函数。当我回显$b时,它也会再次执行该函数。那么,如果这样赋值,您想知道什么
$a = function($arg){
echo($arg);
}
$b = $a;
你的内存中有功能的副本吗
哎呀,我错了。PHP使用写时复制机制,这使得$b
和$a
使用相同的内存缓冲区,除非修改这些变量中的任何一个
另一种可能是你想知道当你做这样的事情时会发生什么
$a = 5; $b = 15;
$c = sin($b)*sqrt($a);
然后,只有这些计算的值将存储在内存中,仅此而已。我希望我确实理解了您真正想问的问题 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-*"
$b
将包含2个。只需将$p
的值复制到其中。我知道$b将包含两个,但假设p是一个更复杂的函数。它会再次运行该函数吗?@Dahnny012你能给我们举个例子吗?当然我在课堂上,但我会马上处理它的。它实际上是值。调用时返回值的函数将其值返回到变量中。函数将只被调用一次,并存储其返回值。假设你是$a=strlen(“你好”)
strlen()的返回值将存储在$a
中,然后执行$b=$a
将$a
的值复制到$b
中,而不是回顾并执行$b=strlen(“hello”)代码>
function echo_a($a) { return sprintf("*-%s-*", $a); }
$func = 'echo_a';
echo call_user_func($func, 'hello'); // will return "*-hello-*"