【问题标题】:Error was encountered Severity: ilegal string offset Codeigniter遇到错误严重性:非法字符串偏移 Codeigniter
【发布时间】:2020-06-11 01:03:46
【问题描述】:

在视图中,我尝试调用 kriteria 和 sub kriteria:

我尝试从 tb_kriteria 调用 id_kriteria, nama_kriteria kriteria 作为标题,然后我调用 id_kriteria, namasubkriteria 作为 option sub kriteria

型号:

public function GetSubKriteria() {
        $this->db->select('*');
        $this->db->from('tb_kriteria');
        $query = $this->db->get();
        $krit = $query->result();
        $data = array();
        $index = 0;
            foreach($krit as $kr_key => $x){
                $data[$kr_key] = array(
                    'id_kriteria'           => $x->id_kriteria,
                    'nama_kriteria'         => $x->nama_kriteria,
                );
                $id_kriteriax = $this->db->where('id_kriteria', $x->id_kriteria);
                $this->db->select('*');
                $this->db->from('tb_subkriteria');
                $query = $this->db->get();
                $id_kriteriax = $query->result();
                foreach($id_kriteriax as $z){
                    // $idKriteriaKey = $z->id_kriteria;
                    $data[$kr_key]['subkriteria'] = array(
                        // 'id_kriteria'           => $x->id_kriteria,
                        // 'nama_kriteria'         => $x->nama_kriteria,
                        'id_subkriteria'        => $z->id_subkriteria,
                        'namasubkriteria'       => $z->namasubkriteria,
                        'value'                 => $z->value
                    );
                }
                $index++;
            }
            return $data;
            // var_dump($data);
    }

查看:

<?php
    $index =0;          
    foreach ($subkriteria_ as $kr_key => $kriteria) {
    ?>
    <div class="form-group">
        <label class="control-label col-xs-3"><?php echo $kriteria['nama_kriteria'] ?></label>
        <div class="col-xs-8">
                <input type="hidden" name="status_pemeliharaan" value="1" class="form-control">
                <input type="hidden" name="id_kriteria[]" value="<?php echo $kriteria['id_kriteria'] ?>" class="form-control">
            <select class="form-control"  name="isi_kriteria[]" required>
                <option>Pilih Sub Kriteria</option>
                <?php $no = 1; foreach ($kriteria['subkriteria'] as $data)     { ?>
                <option value="<?php echo $data['value'] ?>"><?php echo $data['namasubkriteria'] ?></option> // this my error
                <?php  $no++; } ?>
            </select>
        </div>
    </div>
    <?php } ?>

但我尝试了这段代码,现在在视图中显示错误,Error was encountered Severity: ilegal string offset 'value'blabla

如果我尝试var_dump($data); 这个数组只显示一个子标准,并非所有子标准数据都显示在数组中

感谢您的回复...

【问题讨论】:

    标签: php mysql arrays codeigniter var-dump


    【解决方案1】:

    您应该在控制器和视图中使用 empty() 检查数据是否发生

    public function GetSubKriteria() {
        $this->db->select('*');
        $this->db->from('tb_kriteria');
        $query = $this->db->get();
        $krit = $query->result();
        $data = array();
        $index = 0;
            foreach($krit as $kr_key => $x){
                $data[$kr_key] = array(
                    'id_kriteria'           => $x->id_kriteria,
                    'nama_kriteria'         => $x->nama_kriteria,
                );
                $id_kriteriax = $this->db->where('id_kriteria', $x->id_kriteria);
                $this->db->select('*');
                $this->db->from('tb_subkriteria');
                $query = $this->db->get();
                $id_kriteriax = $query->result();
                if(!empty($id_kriteriax)){
                foreach($id_kriteriax as $z){
                    // $idKriteriaKey = $z->id_kriteria;
                    $data[$kr_key]['subkriteria'] = array(
                        // 'id_kriteria'           => $x->id_kriteria,
                        // 'nama_kriteria'         => $x->nama_kriteria,
                        'id_subkriteria'        => $z->id_subkriteria,
                        'namasubkriteria'       => $z->namasubkriteria,
                        'value'                 => $z->value
                    );
                }
                }
                $index++;
            }
            return $data;
    

    查看

    <?php
    $index =0;          
    foreach ($subkriteria_ as $kr_key => $kriteria) {
    ?>
    <div class="form-group">
        <label class="control-label col-xs-3"><?php echo $kriteria['nama_kriteria'] ?></label>
        <div class="col-xs-8">
                <input type="hidden" name="status_pemeliharaan" value="1" class="form-control">
                <input type="hidden" name="id_kriteria[]" value="<?php echo $kriteria['id_kriteria'] ?>" class="form-control">
            <select class="form-control"  name="isi_kriteria[]" required>
                <option>Pilih Sub Kriteria</option>
                <?php $no = 1; 
                foreach ($kriteria['subkriteria'] as $data)     { 
                if(!empty($data)){
                echo '<option value="'.$data['value'].'">'.$data['namasubkriteria'].'</option> 
                <?php  $no++; } } ?>
            </select>
        </div>
    </div>
    <?php } ?>
    

    【讨论】:

    • 这个问题解决了,我已经更新了这行代码 $data[$kr_key]['subkriteria'][] = array(, thx for your response broo
    猜你喜欢
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多