未定义的变量回答eventHough变量已定义

时间:2017-05-28 06:11:42

标签: php codeigniter

<?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控制器调用模型。

2 个答案:

答案 0 :(得分:4)

您必须使用 $this->answers 而不是$this->$answers来调用 answer 属性。

<?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;
  }
}

答案 1 :(得分:0)

  

双箭头运算符“=&gt;”用作访问机制   阵列。这意味着它左侧的内容将具有   数组右侧的对应值   上下文。这可用于将任何可接受类型的值设置为a   数组的对应索引。索引可以是关联的(字符串   基于)或数字。

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

对象操作符“ - &gt;”在对象范围中用于访问方法   和对象的属性。它的意思是说什么在上面   运算符的权限是实例化的对象的成员   运算符左侧的变量。实例化是关键   这里的术语。

  <?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;
  }
}