为什么定义的数组返回false?

u54*_*54r 0 php arrays oop

有人可以解释我为什么当我这样做时,print_r($student->getStudents())我只获得数组的大小并is_array返回false.

这是我的输出

Jane Doe enrolled at Aviation High School
All students:
Nope!3

<?php
 class Student{
 public $name;
 public $students = array('Jason', 'Joe');
 public function __construct($name){
     $this->name = $name;
     $this->students = array_push($this->students, $name);
 }
 public function lastName(){
    return "Doe";
 }

 public function getStudents(){
    return $this->students;
 }
}

class School{
 public $name;
 public function __construct($name){
     $this->name = $name;
 }
}

class Admin{
 public function enroll(Student $student,School $school){
     echo $student->name.' '.$student->lastName().' enrolled at '. $school->name;
     echo '<br />All students:<br />';
     echo is_array($student->getStudents()) ? 'Yeah!':'Nope!' ;
 }
}

$student = new Student("Jane");
$school = new School("Aviation High School");

$admin = new Admin();
$admin->enroll($student, $school);
Run Code Online (Sandbox Code Playgroud)

Sch*_*eis 5

因为在使用数组array_push长度时要覆盖数组.

http://us2.php.net/manual/en/function.array-push.php

更改:

$this->students = array_push($this->students, $name);
Run Code Online (Sandbox Code Playgroud)

至:

array_push($this->students, $name);
Run Code Online (Sandbox Code Playgroud)

或者只做:

$this->students[] = $name;
Run Code Online (Sandbox Code Playgroud)