codeigniter爆炸未定义的偏移量

时间:2012-10-15 00:29:46

标签: php codeigniter explode

我有这样的模特

  function getlastval($prefix,$namatable, $namafield)
{
    $this->db->order_by($namafield,'DESC');
    $key = $this->db->get($namatable);

    if($key->num_rows()>0)
    {

        $lastval= $key->row()->Kode_Material_Jasa;
        $lastval = explode($prefix,$lastval);
        $lv = $lastval[1]; //line 18 refer to this line
        //return ltrim($lv, '0');
        }
    else
    {
        return 0;
    }
}

function gencode($prefix, $digit, $lastval)
{
    return $prefix . str_pad($lastval+1, $digit, '0', STR_PAD_LEFT);
}

它适用于早期的控制器

function addkategorimaterial()
{
    $this->load->model('m_admin');
    $lastval = $this->m_admin->getlastval('KKMJ','ms_kategori_material','Kode_Kategori_Material_Jasa');
    $data['nextval'] = $this->m_admin->gencode('KKMJ',3,$lastval); 
    $data['title'] = 'QB Tambah Kategori Material';
    $this->load->view('head',$data);
    $this->load->view('content/add_kategori_material');
}

它返回KKMJ001但是它不能在另一个控制器上工作

     $this->load->model('m_admin');
$lastval = $this->m_admin->getlastval('KMJ','ms_material_jasa','Kode_Material_Jasa');
    $data['nextval'] = $this->m_admin->gencode('KMJ',3,$lastval); 
    $data['kkmj']='';
    $data['title'] = 'QB Tambah Material / Jasa';

    print_r($data['nextval']);
    print_r($lastval);

所以函数会返回KMJ001,错误就像这样

enter image description here

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我不认为explode()是你所追求的功能。 explode()函数通过分隔符将字符串拆分为数组。

它没有'前缀',因为它是你选择的第一个参数(语义上)。它将分隔符作为第一个参数。

由于您将KMMJ作为分隔符传递,因此从$key->row()->Kode_Material_Jasa;返回的字符串类似于:{{1这会产生:fooKMMJbar ......这是非常不可能的。

无论如何,你打电话给array('foo', 'bar')getlastval('KMJ'...),你确定它们应该不一样吗?