【问题标题】:php Invalid argument supplied for foreach()php 为 foreach() 提供的参数无效
【发布时间】:2014-08-18 01:52:12
【问题描述】:

我真的不明白那里发生了什么。 我在第 87 行遇到问题

$this->data['option_pengujian'][$row->id_penguji] = $row->penguji;

这是函数的代码

public function tambah()
    {
        $this->data['breadcrumb']   = 'Pengujian > Tambah';
        $this->data['main_view']    = 'view_pengujian/pengujian_form';
        $this->data['form_action']  = 'pengujian/tambah';
        $penguji = $this->penguji->cari_semua();
        if($penguji)
        {
            foreach($penguji as $row)
            {
                $this->data['option_pengujian'][$row->id_penguji] = $row->penguji;
            }
        }
        else
        {
            $this->data['option_pengujian']['00'] = '-';
            $this->data['pesan'] = 'Data penguji tidak tersedia. Silahkan isi dahulu data penguji.';
            // if submit
            if($this->input->post('submit'))
            {
                if($this->siswa->validasi_tambah())
                {
                    if($this->siswa->tambah())
                    {
                        $this->session->set_flashdata('pesan', ' Proses tambah data berhasil');
                        redirect('pengujian');
                    }
                    else
                    {
                        $this->data['pesan'] = 'Proses tambah data gagal';
                        $this->load->view('template', $this->data);
                    }
                }
                else
                {
                    $this->load->view('template', $this->data);
                }
            }
            else
            {
                $this->load->view('template', $this->data);
            }
        }
    }

这是模型中的 cari_semua()

public function cari_semua()
    {
        return $this->db->order_by('id_penguji', 'ASC')->get($this->db_tabel)->result();
    }

【问题讨论】:

  • Possible duplicate$penguji 可能不是数组
  • var_dump($penguji) 看看它到底是什么。 if (($penguji) 可能是真实的,但仍然不是对 foreach 中的迭代有用的数组。
  • 我可以查看'penguji'模型的'cari_semua'函数的脚本吗?
  • 我想你只是在得到结果后错过了->row()->result()(将$penguji 设为一个数组)。
  • 我从模型中添加了一些代码

标签: php codeigniter


【解决方案1】:
...
foreach($penguji->row() as $row){
...

...
foreach($penguji->result() as $row){
...

或者:如果你想将它($penguji)作为模型中的一个数组返回,只需将它(->row()->result())添加到你要返回的变量的末尾。

如果你想让它更容易学习,请把脚本写得整齐。

这是你的模型

    public function cari_semua()
        {
            $this->db->order_by('id_penguji', 'ASC');
            return $this->db->get($this->db_tabel)->result(); 
// You have made the result as an array here. 
//So, you don't need to use `->result` in the controller.
        }

但是,如果模型函数包含一些错误,您将永远无法显示您的结果,而是会出现错误页面而不是它。

【讨论】:

  • 然后我得到了这个:致命错误:在非对象上调用成员函数 result()...对不起,我刚开始在这个项目中使用这个 codeigniter
【解决方案2】:

您需要对代码进行更多消毒,请尝试以下操作,如果没有更多信息告诉您出了什么问题,它应该不会解决您遇到的问题。

public function tambah()
{
    $this->data['breadcrumb']   = 'Pengujian > Tambah';
    $this->data['main_view']    = 'view_pengujian/pengujian_form';
    $this->data['form_action']  = 'pengujian/tambah';
    $penguji = $this->penguji->cari_semua();
    if($penguji)
    {
        if(is_array($penguji))
        {
        foreach($penguji as $row)
        {
            $this->data['option_pengujian'][$row->id_penguji] = $row->penguji;
        }
        }
        else
        {
        return "this aint a array";
        die;
    }
    else
    {
        $this->data['option_pengujian']['00'] = '-';
        $this->data['pesan'] = 'Data penguji tidak tersedia. Silahkan isi dahulu data penguji.';
        // if submit
        if($this->input->post('submit'))
        {
            if($this->siswa->validasi_tambah())
            {
                if($this->siswa->tambah())
                {
                    $this->session->set_flashdata('pesan', ' Proses tambah data berhasil');
                    redirect('pengujian');
                }
                else
                {
                    $this->data['pesan'] = 'Proses tambah data gagal';
                    $this->load->view('template', $this->data);
                }
            }
            else
            {
                $this->load->view('template', $this->data);
            }
        }
        else
        {
            $this->load->view('template', $this->data);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2023-03-10
    • 1970-01-01
    • 2018-10-06
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多