Php 无法将数组值存储到$sum中

Php 无法将数组值存储到$sum中,php,Php,我让这个学生上课 <?php Class Student { private $name; private $amountOfGrades; private $grades=array(); function __construct(string $name,int $amountOfGrades){ $this->name=$name; $this->amountOfGrades=$amountOfGrade

我让这个学生上课

<?php 
Class Student

{
    private $name;
    private $amountOfGrades;
    private $grades=array();
    function __construct(string $name,int $amountOfGrades){
        $this->name=$name;
        $this->amountOfGrades=$amountOfGrades;
    }
    
    function setGrades(...$grade)
    {
        for($i=0;$i<$this->amountOfGrades;$i++)
        $this->grades[$i]=$grade;
    }
    function getGrades(){
        
        return $this->grades;
        
        
    }
 function getAvg(){
     $sum=0;
     for($i=0;$i<count($this->grades);$i++)
     $sum+=$this->grades[$i];
    return $sum/$amountOfGrades;
 }
}
?>
如果我不能使用,我应该如何将金额存储到sum中以返回平均值+=
提前感谢

您的setGrades就是问题所在,您将整个grade数组传递给了每个元素。您还必须使用$this->amountOfGrades而不是$amountOfGrades。看一看;)



var\u dump($this->grades)
对于初学者;这是一个数组数组,而不是你所期望的数字数组,因为
setGrades
被破坏了。谢谢你,我从来都不知道rest操作符是一个数组哈哈,我的boooooh,现在我明白了…$grade它本身就是一个数组,谢谢你,我从来都不知道我学的越多,谢谢你帮我放松了我觉得我撞到了一堵砖墙
<?php
require_once "studentClass.php";

$Jack = new Student("Jack",3);
$Jack->setGrades(100,50,69);
print_r($Jack->getAvg());

?>
Fatal error: Uncaught TypeError: Unsupported operand types: array + null in D:\xamp\htdocs\studentClass.php:27 Stack trace: #0 D:\xamp\htdocs\testStudent.php(6): Student->getAvg() #1 {main} thrown in D:\xamp\htdocs\studentClass.php on line 27
  <?php 
    Class Student
    
    {
        private $name;
        private $amountOfGrades;
        private $grades=array();
        
        function __construct(string $name,int $amountOfGrades){
            $this->name=$name;
            $this->amountOfGrades=$amountOfGrades;
        }
        
        function setGrades(...$grade)
        {
            for($i=0;$i<$this->amountOfGrades;$i++)
            $this->grades[$i]=$grade[$i];
        }
        
        function getGrades(){
            return $this->grades;
        }
        
         function getAvg(){
             $sum=0;
             for($i=0;$i<count($this->grades);$i++) {
                 $sum+=$this->grades[$i];
             }
             
             return $sum / $this->amountOfGrades;
         }
    }
    
    $Jack = new Student("Jack",3);
    $Jack->setGrades(100,50,69);
    print_r($Jack->getAvg());
    
    ?>