gpt4 book ai didi

php - 为什么 php 函数不更新数组值

转载 作者:行者123 更新时间:2023-12-02 21:01:39 24 4
gpt4 key购买 nike

我是 php/programming 的新手,想知道为什么这不能按照我认为的方式工作。

我有一个数组,我想用一个函数修改其中一个值。

我一直在阅读和学习一些教程,认为它与变量范围有关吗?或者这可能不是解决此类问题的方法,应该使用其他方法?

<?php
$someArray = array("value1"=> 0, "value2" => 0);
function test ($a) {
if ( 5 > 4 ) {
$a["value1"] += 1;
echo $a["value1"] . "<br/>";
}
}
test($someArray);
echo $someArray["value1"];
?>

我不明白的是为什么当我在函数内部回显以获取“value1”的新值时它有效,但在外部它不起作用。我非常感谢任何帮助/指导,如果这太愚蠢或错误,我深表歉意。

最佳答案

您作为数组的副本传递。您应该使用地址传递数组以反射(reflect)数组内部所做的更改。使用 &(作为引用传递):

$someArray = array("value1"=> 0, "value2" => 0);
function test (&$a) { //Use & here
^
if ( 5 > 4 ) {
$a["value1"] += 1;
echo $a["value1"] . "<br/>";
}
}
test($someArray);
echo $someArray["value1"];

这是解释:(取自 here)

explanation

阅读此 SO question也是。


另一种方法是从函数返回值。在函数内部,使用 return 并在外部捕获它:

$someArray = array("value1"=> 0, "value2" => 0);
function test ($a) {
if ( 5 > 4 ) {
$a["value1"] += 1;
echo $a["value1"] . "<br/>";
}
return $a; //Return here
}
$someArray = test($someArray); //Capture here
echo $someArray["value1"];

关于php - 为什么 php 函数不更新数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37959672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com