Вызов значения массива внутри класса

#php #arrays #class #function #object

#php #массивы #класс #функция #объект

Вопрос:

Я хочу создать простую команду при вызове массива. В этом случае это была бы кнопка ВКЛЮЧЕНИЯ внутри пульта дистанционного управления. (Иллюстративная концепция). Но не работает (синтаксическая ошибка).

Это мой фрагмент кода:

     <?php
class remoteControl{

    public $operate = array("ON", "OFF", "UP","DOWN");



    public function pressButton($operate("0")){
    echo "You have pressed ". $this->operate;
    }
}

$control_01 = new remoteControl();

echo $control_01-> pressButton();

?> 
  

Любая помощь была бы очень полезной 🙂

Ответ №1:

У вас есть несколько синтаксических ошибок, предполагающих, что вам следует прочитать руководство по PHP об основах.

Ваш код (отформатированный):

 <?php 
class remoteControl {
    public $operate = array("ON", "OFF", "UP","DOWN"); // 1) 

    public function pressButton($operate("0")) {  // 2), 3), 4)
        echo "You have pressed ". $this->operate; // 5)
    }
}

$control_01 = new remoteControl();                
echo $control_01-> pressButton();

?>
  

1) вы должны сделать эту переменную закрытой, если она используется только внутри методов класса

2) использование массивов: $operate[0] — подробнее

3) не используйте string в качестве индекса («0») — это сработает, но приведение к ненужному типу

4) наконец, эта строка должна быть примерно такой:

 public function pressButton($operate = 0) {
  

это означает, что если вы явно не предоставите аргумент, он будет иметь значение 0 — подробнее об аргументах функции

5) из-за 4) это должно быть:

 echo "You have pressed ". $this->operate[$operate];
  

РЕДАКТИРОВАТЬ: Весь код:

 <?php
class remoteControl {
    private $operate = array("ON", "OFF", "UP", "DOWN");

    public function pressButton($operate = 0) {
        echo "You have pressed ". $this->operate[$operate];
    }
}

$control_01 = new remoteControl();                
echo $control_01->pressButton();

?>
  

Ответ №2:

не совсем понятно, что вы собираетесь делать с вашим кодом, вы, кажется, передаете один элемент operate array в свою функцию. надеюсь, этот код поможет: http://codepad.org/CYVT7hI5

  <?php
class remoteControl{

    public $operate = array("ON", "OFF", "UP","DOWN");



    public function pressButton($index){
    echo "You have pressed ". $this->operate[$index];
    }
}

$control_01 = new remoteControl();

echo $control_01->pressButton(1);

?>