在php中创建使用函数传递的值数组

在php中创建使用函数传递的值数组,php,arrays,function,Php,Arrays,Function,我试图得到传递给函数的所有数字的总和,但遇到了一些问题 我想显示数组和回响时的结果17,数组('1','4','9','3') 有人能解释一下我做错了什么吗?这不是最好的方法,但你可以尝试添加global$items到您的结果\时间函数 function result_time($Num) { global $items; $items[] = $Num; } 您可以在此处阅读有关变量范围的更多信息:$items函数内部和函数外部的$items位于两个不同的范围

我试图得到传递给函数的所有数字的总和,但遇到了一些问题

我想显示数组和回响时的结果17,数组('1','4','9','3')


有人能解释一下我做错了什么吗?

这不是最好的方法,但你可以尝试添加
global$items到您的
结果\时间
函数

function result_time($Num)
{
    global $items;
    $items[] = $Num;        
}

您可以在此处阅读有关变量范围的更多信息:

$items
函数内部和函数外部的
$items
位于两个不同的范围内,它们是完全不同的变量。每次调用时,函数内部的
$items
都会重置为空,并且不会影响函数外部的
$items
。本质上,你的函数什么都不做。正确地说,您应该使用类来执行以下操作:

class Result {

    protected $items = array();

    public function add($num) {
        $this->items[] = $num;
    }

    public function getResult() {
        return array_sum($this->items);
    }

}

$r = new Result;
$r->add(1);
...
echo $r->getResult();
您还可以使用
静态变量使函数内的值累加:

function result_time($Num){
    static $items = array();
    $items[] = $Num;
    return $items;
}

result_time(1);
...
$result = result_time(3);

echo array_sum($result);

不过这不是个好主意。您也可以使用
global
关键字共享变量的范围,但这是一个坏主意,我不打算宣传它。了解变量作用域并正确构造代码。

看起来您已经知道了在代码运行过程中要求和的所有值。为什么不直接将它们添加到数组中

<?php    
$result_times = array();
array_push($result_times, 1);
// some code
array_push($result_times, 4);
// other code
array_push($result_times, 9);

echo array_sum($result_times);

<?php    
$result_times = array();
array_push($result_times, 1);
// some code
array_push($result_times, 4);
// other code
array_push($result_times, 9);

echo array_sum($result_times);