2013-05-15 2 views
0

Может кто-нибудь объяснить мне, почему, когда я делаю print_r($student->getStudents()) Я получаю только размер массива и is_array возвращает false.Почему заданный массив возвращает 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); 
+3

[array_push] (http://php.net/manual/en/function.array-push.php) не работает так, как вы его используете, я бы сказал. – cheesemacfly

ответ

5

Поскольку вы перезапись массив, когда вы делаете array_push с длиной массива.

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

Изменение:

$this->students = array_push($this->students, $name); 

To:

array_push($this->students, $name); 

В качестве альтернативы просто сделать:

$this->students[] = $name; 
+0

Ха-ха, избили вас на 4 секунды: p У меня +1 на меня! –

+0

Вы правы. Несмотря на то, что я часто использовал функцию 'array_push', иногда вы пропускаете мелочи. – u54r

4

array_push не возвращает новый массив, он непосредственно изменяет массив, передать его и возвращает новую длину массива.

Следовательно, после вызова $this->students = array_push($this->students,$name) у вас есть 3 как значение, которое, очевидно, не является массивом.

Documentation

Смежные вопросы