PHP错误未初始化的字符串偏移量:0

时间:2015-01-23 04:43:57

标签: php arrays string

我收到此错误:

  

遇到PHP错误   严重性:通知
  消息:未初始化的字符串偏移量:0
  文件名:controllers / basecontroller.php
  行号:616和行号:617

这是我的代码:

//Controller File
function _send_email($email_template, $receiver=array(), $data=array(), $sender=array()){
$this->load->model('ad_model');
$tmpl = $this->ad_model->getAdByCode($email_template);
$title = $tmpl['desc']; // Line 616
$html = $tmpl['html']; // Line 617
$html = str_replace("[NAME]", $receiver['name'] ,$html);
//$html = str_replace("[PWD]", $pwd ,$html);
$html = str_replace("[EMAIL]", $receiver['email'] ,$html);

foreach($data as $code=>$d){
  $html = str_replace("[".strtoupper($code)."]", $d ,$html);
}
...

//Model File
function getAdByCode($code){
    $this->db->select('html,desc');
    $rec = $this->db->get_where('ad', array('code'=>$code), 1,0);
    //echo $code;
    //echo print_r($rec,1);
    $rec = $rec->result_array();
  if(isset($rec[0])){
    $rec = $rec[0];
  } else {
    $rec = '';
  }     

    return $rec;
  }
}

有人会帮忙吗?

2 个答案:

答案 0 :(得分:0)

似乎在$tmpl数组中找不到索引。尝试检查设置或不设置的值以避免通知

$title = (isset($tmpl['desc']) ? $tmpl['desc'] : ''); // Line 616
$html = (isset($tmpl['html']) ? $tmpl['html'] : '');

答案 1 :(得分:0)

您的模板数组$tmpl不包含html作为密钥。

如果您可以在$this->ad_model->getAdByCode($email_template);中控制它,则可以更改为使用$tmpl['html']写信时使用。

但是从数组中访问关键元素的建议方法是检查它的存在,例如:

$title = isset($tmpl['desc']) ? $tmpl['desc'] : ''; 
$html = isset($tmpl['html']) ? $tmpl['html'] : '';