打印特定阵列数据时出现问题

时间:2019-01-24 23:02:59

标签: php

我正在使用播放器类,代码将打印一个表单,其中包含姓名,姓氏和位置字段,必须添加新的播放器。

但是在打印播放器时出现问题,因为我只打印播放器的名称,当我尝试分别打印数据(名称,姓氏和位置)时,我什么也不打印。

session_start();

class Player {

    private $players;
    private $name;
     private $lastname;
     private $location;

    public function __construct($name,$lastname,$location)
    {
        $this->name = $name;
          $this->lastname = $lastname;
          $this->location = $location;
        $this->players = array();
    }

    public function getName()
    {
        return $this->name;
    }

     public function getLastname()
    {
        return $this->lastname;
    }

     public function getLocation()
    {
        return $this->location;
    }

     public function addPlayer($onePlayer)
     {
          $this->players[] = $onePlayer;

          return $this;
     }

     public function printPlayers()
     {
          foreach($this->players as $player){

               // just show the name¿?.
               echo $player.'<br />';

                // The problem is here.
                /*echo $player['name'].'<br />';
                echo $player['lastname'].'<br />';
                echo $player['location'].'<br />';*/
          }
     }

    public function __toString()
    {
        return $this->name;
          return $this->lastname;
          return $this->location;
    }
}



function printForm()
{
     echo '<FORM METHOD="POST" style="text-align: center; margin-top: 73px;">
                <h2>Add Players</h2>
                <label>Add the name : </label><INPUT class="form" TYPE = "text" NAME = "name"> <br>
                     <label>Add the lastname : </label><INPUT class="form" TYPE = "text" NAME = "lastname"> <br>
                     <label>Add the location : </label><INPUT class="form" TYPE = "text" NAME = "location"> <br><br>
                <INPUT class="form" TYPE = "submit" VALUE = "add" name="action">
                <INPUT class="form" TYPE = "submit" VALUE = "list" name="action">
            </ FORM>';
}

// Load the player data of the session and if it does not exist create a new player.
function loadData()
{
    return isset($_SESSION['player']) ? $_SESSION['player'] : new Player();
}


// Save the player's data in the session.
function saveData($player)
{
   $_SESSION['player'] = $player;
}


printForm();

$player = loadData();

if(isset($_POST['action']))
{
    switch($_POST['action'])
    {
        case 'add':
            $player->addPlayer(new Player($_POST['name'],$_POST['lastname'],$_POST['location']));
            saveData($player);
            break;

        case 'list':
            echo '<hr />';
            $player->printPlayers();
            break;
    }
}

1 个答案:

答案 0 :(得分:0)

在有问题的部分中,您似乎正在尝试使用数组语法访问私有属性。出于几个原因,这行不通

  1. 无法在此处访问这些属性,因为它们被定义为私有
  2. 您无法使用数组语法获取它们。如果他们不是私人用户,则需要使用$player->name

但是幸运的是,您还编写了一些吸气剂,因此您应该可以使用它们,就像这样:

echo $player->getName();