【问题标题】:codeigniter explode undefined offsetcodeigniter 爆炸未定义的偏移量
【发布时间】:2012-10-15 00:29:46
【问题描述】:

我有这样的模型

  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,错误是这样的

我该如何解决这个问题?

【问题讨论】:

  • 能否请您编辑您的问题并发布您文件中的第 18 行。谢谢。
  • @EricLeroy 我猜是$lv = $lastval[1];
  • 我假设第 18 行是这样的:$lv = $lastval[1];
  • 我猜你在失败实例中的Kode_Material_Jasa 属性不包含字符串KMJ 所以explode() 只返回一个单项数组(没有1 索引)跨度>
  • @jeffrey 所以 $lastval 将包含数据库上Kode_Material_Jasa 字段上的值,而 $lastval 是我想通过附加到$lastval 的分隔符$prefix 来分割它们

标签: php codeigniter explode


【解决方案1】:

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

它不需要“前缀”,因为它是您选择的第一个参数(语义上)。它将分隔符作为第一个参数。

由于您将 KMMJ 作为分隔符传递,因此获得数组索引 1 的唯一方法是,如果从 $key->row()->Kode_Material_Jasa; 返回的字符串类似于:fooKMMJbar,这将产生:array('foo', 'bar') ...这是极不可能的。

不管怎样,你打电话给getlastval('KMJ'...)getlastval('KMMJ'...),你确定它们不应该是一样的吗?

【讨论】:

    猜你喜欢
    • 2016-06-26
    • 2013-04-22
    • 2013-01-26
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多