<?php

class Question_model extends CI_Model {
  public $answers;

  public function filter_answers($value){
    if(is_string($value))
    {
      if(strpos($value,"option") !== false){
        $this->$answers[] = str_replace("option","",$value);
      }
    }
  }
  public function create_question($data){
      $data = array(
        'explanation' => $data['exp'],
        'name' => $data['name']
      );

      $this->db->insert('question', $data);

      array_filter($data,array($this,"filter_answers"));
      echo $this->$answers;
  }
}

Я использую платформу codeigniter, и я получаю это в модели, как вы можете видеть, что переменная на самом деле определена, а не наоборот. Я звоню модель с контроллера codeigniter.

1
Krishna Satya 28 Май 2017 в 09:11

2 ответа

Лучший ответ

Вы должны вызывать свойство answer с $this->answers , а не с $this->$answers.

<?php

class Question_model extends CI_Model {
  public $answers;

  public function filter_answers($value){
    if(is_string($value))
    {
      if(strpos($value,"option") !== false){
        $this->answers[] = str_replace("option","",$value);
      }
    }
  }
  public function create_question($data){
      $data = array(
        'explanation' => $data['exp'],
        'name' => $data['name']
      );

      $this->db->insert('question', $data);

      array_filter($data,array($this,"filter_answers"));
      echo $this->answers;
  }
}
4
Mohammad Hamedani 28 Май 2017 в 06:13

Оператор двойной стрелки "=>" используется в качестве механизма доступа к массивам. Это означает, что то, что находится слева от него, будет иметь соответствующее значение того, что находится справа от него в контексте массива. Это может быть использовано для установки значений любого приемлемого типа в соответствующий индекс массива. Индекс может быть ассоциативным (на основе строки) или числовым.

<?php
$myArray = array(
 0 => 'Big',
 1 => 'Small',
 2 => 'Up',
 3 => 'Down'
 );
 ?>

Оператор объекта "->" используется в области видимости объекта для доступа к методам и свойствам объекта. Это означает, что то, что находится справа от оператора, является членом объекта, созданного в переменной в левой части оператора. В данном случае это ключевой термин.

  <?php
    $obj = new MyObject(); // Create a new instance of MyObject into $obj
    $obj->thisProperty = 'Fred'; // Set a property in the $obj object called thisProperty
    $obj->getProperty(); // Call a method of the $obj object named getProperty
    ?>

< Сильный > Пример

<?php

class Question_model extends CI_Model {
  public $answers;

  public function filter_answers($value){
    if(is_string($value))
    {
      if(strpos($value,"option") !== false){
        $this->answers[] = str_replace("option","",$value);
      }
    }
  }
  public function create_question($data){
      $data = array(
        'explanation' => $data['exp'],
        'name' => $data['name']
      );

      $this->db->insert('question', $data);

      array_filter($data,array($this,"filter_answers"));
      echo $this->answers;
  }
}
0
RïshïKêsh Kümar 28 Май 2017 в 06:36