无法弄清楚这个错误。消息:尝试获取非对象的属性

时间:2018-06-08 07:03:56

标签: php codeigniter-3

我只是想根据国家的选择来获取州。当我试图获取状态时,我收到了以下错误。

<p>Severity: Notice</p>
<p>Message:  Trying to get property of non-object</p>
<p>Filename: General/Common.php</p>
<p>Line Number: 19</p>

这是我的模特

function get_states($param_countryid)
    {
        $get_states = $this->db->order_by($this->state_name, 'asc')->where($this->c_id ,$param_countryid)->get($this->tbl_state)->result_array();
        $states = array();
        foreach ($get_states as $state_row) {
            $states[$state_row[$this->state_id]] = $state_row[$this->state_name ];
        }
        return $states;
    }

这是我的控制器(Common.php)

$data['states'] = $this->commodel->get_states($this->input->post('country_id'));
        $states = null;
       foreach ( $data['states']  as $states_row ) {
            $states .= "<option value='" . $states_row->id. "'>" . $states_row->name. "</option>"; Line Number 19 mentioned in the error.

        }
        echo $states;

我从print_r($data['states'])获得的是(假设选择了一个国家/地区,例如印度)

Array ( [1] => Andaman and Nicobar Islands [2] => Andhra Pradesh [3] => Arunachal Pradesh [4] => Assam [5] => Bihar [6] => Chandigarh [7] => Chhattisgarh [8] => Dadra and Nagar Haveli [9] => Daman and Diu [10] => Delhi [11] => Goa [12] => Gujarat [13] => Haryana [14] => Himachal Pradesh [15] => Jammu and Kashmir [16] => Jharkhand [17] => Karnataka [19] => Kerala [20] => Lakshadweep [21] => Madhya Pradesh [22] => Maharashtra [23] => Manipur [24] => Meghalaya [25] => Mizoram [26] => Nagaland [29] => Odisha [31] => Pondicherry [32] => Punjab [33] => Rajasthan [34] => Sikkim [35] => Tamil Nadu [36] => Telangana [37] => Tripura [38] => Uttar Pradesh [39] => Uttarakhand [41] => West Bengal )

当我尝试

$states .= "<option value='" . $states_row['id']. "'>" . $states_row['name']. "</option>";

我收到以下错误。

  

消息:非法字符串偏移&#39; id&#39;

     

消息:非法字符串偏移    &#39;名称&#39;

请告诉我我在这段代码中犯了哪些错误。

1 个答案:

答案 0 :(得分:1)

正如您从print_r($data['states'])中看到的那样,您将获得一个键,该键是状态的ID,每个元素的值都是名称。所以你需要输出像......

foreach ( $data['states']  as $id=>$name ) 
{
  $states .= "<option value='" . $id. "'>" . $name. "</option>"; 
}