<?php
function sum($y) {
$y = $y + 5;
}
$x = 5;
sum($x);
echo $x;
?>
Run Code Online (Sandbox Code Playgroud)
所以我有这个代码.问题是:它输出了什么?答案:5.如何输出10?答案:总和(&$ x).
问题是我不明白为什么第一个问题的答案是5.当你得到总和($ x)时,它不应该用$ x替换函数,所以$ x = 5 + 5 = 10?为什么答案是5?我真的不明白.有人解释了与指针和地址相关的东西,但我不明白.我从来没有理解指针的概念,我用谷歌搜索它,显然在PHP中没有指针,所以我非常困惑.我的朋友说变量是由一个值和该值的内存地址组成的.有人可以解释我,就像我5岁,为什么答案是5而不是10?请
我们假装$x
是一张5
写在上面的纸.
function sum($y) {
$y = $y + 5;
}
Run Code Online (Sandbox Code Playgroud)
这$y
是你写的东西的价值.你在脑海中添加了5这样的值,但是音符保持不变.
function sum(&$y) {
$y = $y + 5;
}
Run Code Online (Sandbox Code Playgroud)
随着操作参考(&$y
),您通过非常纸张的功能,它会覆盖什么的写在上面.
对于像数字这样的原始值,我不会打扰return
你想要的值:
function valuePlusFive($x) {
return $x + 5;
}
$x = 5;
$x = valuePlusFive($x);
Run Code Online (Sandbox Code Playgroud)
从理论的角度来看,这不是一个很好的解释,但这应该有助于你理解这个概念:
当你声明这样的函数然后调用它:
function ($argument) {...}
Run Code Online (Sandbox Code Playgroud)
你传递的参数是通过值传递的.这意味着在函数范围内,您将使用您传递的参数的副本.你可以想象,在调用函数之前,已经创建了参数的副本,并且在函数内部使用了副本,而原始文件保持不变.功能完成后,副本就不复存在了
但是当你声明它时:
function (&$argument) {...}
Run Code Online (Sandbox Code Playgroud)
您通过引用传递参数,这意味着您正在使用已传递的变量.因此,在这种情况下,不会创建副本,您从一个地方获取参数,将其放在函数内并更改它.
归档时间: |
|
查看次数: |
1195 次 |
最近记录: |