【问题标题】:error foreach in View Codeigniter : Illegal string offset查看 Codeigniter 中的错误 foreach:非法字符串偏移
【发布时间】:2017-02-28 09:25:10
【问题描述】:

请帮忙,我使用 foreach 从数据库返回数据,但它只返回最后一个数据(数组总是用最后一个数据更新)。所以我修改了代码,但我得到了错误:foreach 中的非法字符串偏移。

这是我的控制器

foreach($dataDesa as $desa)
        {
            $namaDesa = json_decode($this->curl->simple_get($desa->alamat_api.'/info_desa?ID_DESA=1'));
            $datakonten[$namaDesa] = array(                         
                                        'proyek' =>json_decode($this->curl->simple_get($desa->alamat_api.'/proyek_pertanian')),
                                        'nama_desa' =>json_decode($this->curl->simple_get($desa->alamat_api.'/info_desa?ID_DESA=1')),
                                        'lelang' =>json_decode($this->curl->simple_get($desa->alamat_api.'/pelelangan'))
                                        );
        }

        $datakonten['getAllDesa'] = $this->M_desa->getAllDesa($idStatus);

        $nama_Desa = array();
        foreach($datakonten['getAllDesa'] as $row)
        {
           $nama_Desa[] = $row->nama_desa;
        }

        $datakonten['nama_desa']=$nama_Desa;
        $data['content'] = $this->load->view('public/konten/v_home',$datakonten,TRUE);
    $this->load->view('public/halaman/v_home',$data);

这是我的看法

$i=0;
foreach($nama_desa[$i]['proyek'] as $rows)
{   
    $nama = $rows->nama_proyek; 
    i++;
}

我已经测试了 $nama_desa[0] 和 $nama_desa[1] 并且它们返回了值(值是“Kranon”和“Wulung”),我使用像 $Kranon['proyek'] 这样的值没有错误并返回了我想要的值,但是当我将它与 $nama_desa[$i]['proyek'] 结合使用时,我得到了这个错误。 ` 请帮忙,提前谢谢

【问题讨论】:

  • 请提及您遇到错误的 foreach 的行号。
  • 我在查看 @Arcanyx 时遇到了 foreach 的错误
  • 以上代码中有2个foreachs...@Florentina
  • 其实有3个foreach。我的控制器中有 2 个,我的视图中有 1 个:我的视图有问题。 foreach($nama_desa[$i]['proyek'] as $rows) @Arcanyx

标签: codeigniter error-handling warnings


【解决方案1】:

您只需将 $row->nama_desa 推送到 $nama_desa。并尝试从 $nama_desa 获取 ['proyek']?

【讨论】:

  • // 控制器 $namaDesa = []; foreach($dataDesa as $desa) { $nama = json_decode($this->curl->simple_get($desa->alamat_api.'/info_desa?ID_DESA=1')); $namaDesa[$nama][] = [ 'proyek' => json_decode($this->curl->simple_get($desa->alamat_api.'/proyek_pertanian')), 'nama_desa' => $nama, 'lelang' => json_decode($this->curl->simple_get($desa->alamat_api.'/pelelangan')) ]; } $datakonten['nama_desa']= $namaDesa; // 查看 foreach($nama_desa as $key => $desa) { $nama = $key; $proyek = $desa['proyek']; }
  • 未定义索引:proyek on $proyek = $desa['proyek']; @爱国者
  • 对不起,把 $namaDesa[$nama][] 改成 $namaDesa[$nama]
  • 它返回 null
【解决方案2】:

正如你上面解释的,你得到了这个 $nama_desa[1] 的价值,但你试图访问这个密钥 $nama_desa[$i]['proyek'] 这意味着它正在寻找 $nama_desa[1]['proyek' ] 是不存在的。

做事

print_r($name_desa);die;

您会发现 $name_desa[1] 上没有名称为“proyek”的密钥(密钥“1”我仅给出了示例。它可以是任意数量的密钥)

我猜你会通过访问这个 $nama_desa['proyek'] 来获得你的价值,或者你会得到打印结果的想法。

【讨论】:

  • 感谢您的提前,您是对的,$nama_desa[1]['proyek'] 不存在。那么如何将变量传递给foreach呢?如果它可以返回 $Kranon['proyek'] 的值,为什么它不能返回 $data[1]['proyek'] 的值?当 $data[1] 指代 Kranon
  • 如我所见,您已在 $nama_desa[$i]['proyek'] 上申请了 foreach,这将仅在第一个索引上申请 foreach。如果我没记错,请尝试在 $name_desa 上申请每个。您不需要使用 '$i' 添加额外的密钥,foreach 会处理它。试试这样:
      foreach( $nama_desa as $key){ print_r($name_desa);print_r($key);die; } 
    看看打印结果。您将了解如何获得价值。
【解决方案3】:

我刚刚找到了我的解决方案。 每当我想将引用另一个值的变量传递给foreach时,我总是会出错,所以我修改了我的控制器,以便可以直接将值传递给View中的foreach。我将“get-data-from-API”从 Controller 移到 View 中。

我的控制器:

$datakonten['getAllDesa'] = $this->M_desa->getAllDesa($idStatus);
$data['content'] = $this->load>view('public/konten/v_home',$datakonten,TRUE);

我的观点:

foreach($getAllDesa as $rows)
        {
            $proyek = json_decode($this->curl->simple_get($rows->alamat_api_lelang));

            foreach($proyek as $baris)
            {
                $namaProyek = $baris->nama_proyek;

                ?>
                Nama Proyek : <?php echo $namaProyek;?></br>
                <?php   
            }

        }

【讨论】:

    猜你喜欢
    • 2020-11-29
    • 2013-09-30
    • 1970-01-01
    • 2015-04-03
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    相关资源
    最近更新 更多