duanfen1312
2011-10-28 20:26 阅读 60
已采纳

将对象添加到数组 - assign_to_dorm函数

I cannot figure out why the program is not working. I am supposed to take each student object and use to assign_to_dorm function and add them to the dorm. and then print out all of the occupants in the array with the view_occupants function. All the program does is iterate one of the Dorm names and does nothing with the view_occupants. I'm not even sure if the Assign_to_dorm function is even working

index.php file

    <!DOCTYPE html>
     <html>
     <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>

<?php

        require_once ('student.class.php');
        require_once ('dorm.class.php');

        $dorms = array();
        $students = array();

        $dorms[0]= new Dorm('Landis', 402);
        $dorms[1]= new Dorm('Salley', 570);
        $dorms[2]= new Dorm('DeGraff', 700);
        $dorms[3]= new Dorm('Cawthon', 297);
        $dorms[4]= new Dorm('Reynolds', 243);



        $students[0] = new Student('Tim', 'James', 'senior', 'male');
        $students[1] = new Student('Kyle', 'McLastly', 'junior', 'male');
        $students[2] = new Student('Stacey', 'Keibler','senior','female');
        $students[3] = new Student('Jessica', 'Mullins', 'junior','female');
        $students[4] = new Student('Kenneth', 'Yagems','senior', 'male');
        $students[5] = new Student('Chad', 'Stacey', 'sophomore', 'male');
        $students[6] = new Student('Kyle', 'Bridgan', 'senior', 'male');
        $students[7] = new Student('Heath', 'Banks', 'sophomore', 'female');
        $students[8] = new Student('Christina', 'Burbanks', 'freshman', 'female');
        $students[9] = new Student('Thomas', 'Wilson', 'senior', 'male');
        $students[10] = new Student('Katy', 'Parks', 'junior', 'female');
        $students[11] = new Student('Jay', 'Bradshaw', 'sophomore', 'male');
        $students[12] = new Student('Laura', 'Demetri', 'freshman', 'female');
        $students[13] = new Student('Bryan', 'Griffin', 'freshman', 'male');
        $students[14] = new Student('Stuart', 'Griffin', 'senior', 'male');

        shuffle($students);


        foreach($students as $student){

            $key = array_rand($dorms);
            $dorm = $dorms[$key];
            $dorm->assign_to_dorm($student);

        }


        foreach ($dorms as $dorm){

                echo "<h3>".$dorm->get_dname()."</h3>";

                echo "<p>".$dorm->view_occupants()."</p>";

        }

        ?>
    </body>
  </html>

dorm.class.php file

<?php

       require_once ('student.class.php');

     class Dorm
    {

     private  $dorm_name;
     private  $capacity;
     private  $occupants = array();



     public function __construct($dorm_name,$capacity) {

         $this->dorm_name = $dorm_name;
         $this->capacity = $capacity; 

    }


        public function assign_to_dorm($student){


           if(count($this->occupants) >= $this->capacity) {

             return FAlSE;
           }

          else{

               array_push($this->occupants, $student);


               return TRUE;

          }
       }

      function get_dname(){

          return $this->dorm_name;
       }

      function get_capacity(){

          return $this->capacity;
       }

      function view_occupants(){
          foreach($this->occupants as $resident){
           echo "<p>".$resident."</p>";
          }
        }

       }

  ?>
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    dssqq82402 dssqq82402 2011-10-28 20:37

    Your code looks ok to me, but I notice that Dorm::ocupants appears to be an array of Student objects. When you iterate over it in view_occupants(), you are echoing out the object directly. Unless it calls a __toString() magic method to produce output for echo, you won't be displaying the information you intend.

    If my assumption is incorrect, please also post student.class.php.

      function view_occupants(){
          foreach($this->occupants as $resident){
    
           // Instead of echoing out the $resident obj, echo out a name:
           echo "<p>".$resident->lastname."</p>";
          }
        }
    
    点赞 评论 复制链接分享
  • doujie9882 doujie9882 2011-10-28 20:39

    Umm, I can't seem to spot any errors within your code. Except that, you echo $resident which is an object, so you have to echo one of it's properties such as name.

    Try it out, if it doesn't work post the code for the Students class as well so I can try running it.

    点赞 评论 复制链接分享

相关推荐