标签搜索
PHP

PHP按值传递

wehg489
2025-10-29 / 0 评论 / 1 阅读 / 正在检测是否收录...

现实生活中的比喻
想象一下你有一张写了字的纸(变量),你想让朋友帮你修改:

按值传递的过程:
你复印这张纸(创建副本)

把复印件给朋友(传递副本)

朋友在复印件上修改(函数内部操作)

朋友把修改后的复印件还给你(函数返回值)

你的原稿完全没变(原始变量不变)

// 你的代码
$myPaper = "Hello World";
$modifiedPaper = friendModifies($myPaper);

function friendModifies($friendsCopy) {
    $friendsCopy = $friendsCopy . " - Modified!";
    return $friendsCopy;
}

第一步

$myPaper = "Hello World"; 
// 在内存中:创建变量 $myPaper,存储值 "Hello World"

第二步

$modifiedPaper = friendModifies($myPaper);
//函数调用时发生了什么?

实际上是这样执行的:

PHP 先计算 $myPaper 的值 → 得到 "Hello World"

把这个值 "Hello World" 交给函数,而不是把变量名 $myPaper 交给函数

函数说:"我接收这个值,并在内部用一个新变量 $friendsCopy 来存放它"
第三步

function friendModifies($friendsCopy) {
    // 此时:$friendsCopy = "Hello World" (接收了传递过来的值)
    $friendsCopy = $friendsCopy . " - Modified!";
    // 现在:$friendsCopy = "Hello World - Modified!"
    return $friendsCopy;
}

重要概念:形参 vs 实参
实参(实际参数):调用函数时传递的值 → $myPaper

形参(形式参数):函数定义时声明的接收变量 → $friendsCopy

核心要点:函数只关心传递过来的值是什么,不关心这个值在外部叫什么变量名。

这就是为什么变量名可以不同的根本原因

这种设计的好处是:

函数可以独立使用,不依赖外部变量名

提高代码复用性:同一个函数可以被不同地方调用,使用不同的变量名

减少命名冲突:函数内部可以使用任何变量名,不会影响外部

// 你(调用者)说:
$myOrder = "披萨";
$deliveredFood = restaurantCooks($myOrder);

// 餐厅(函数)说:
function restaurantCooks($ingredients) {
    // 餐厅收到的是"披萨"这个订单内容,不是你的$myOrder变量名
    $cookedFood = "美味的" . $ingredients;
    return $cookedFood;
}

你告诉餐厅:"我要披萨"(传递值)

餐厅内部把"披萨"称为"食材"(形参名不同)

餐厅加工"食材"后返回"美味的披萨"

0

评论

博主关闭了当前页面的评论
歌曲封面
0:00