kel*_*teb 6 php arrays function
我是 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"];
?>
Run Code Online (Sandbox Code Playgroud)
我不明白的是为什么当我在函数内部回显以获取“value1”的新值时它起作用,但在外部它不起作用。我真的很感激任何帮助/指导,如果这太愚蠢或错误,我很抱歉。
Tha*_*lan 12
您作为数组的副本传递。您应该使用地址传递数组以反映数组内所做的更改。使用&(作为参考传递):
$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"];
Run Code Online (Sandbox Code Playgroud)
这是解释:(从这里获取)

也阅读这个问题。
另一种方法是从函数返回值。在函数内部,使用 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"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2968 次 |
| 最近记录: |