我是Codeigniter的新生儿,我非常渴望面对这个问题。所以,我刚用CI做了一个简单的应用程序。当我想检查一个对象数组(在这种情况下是$ kunj-> DIAG的数组)时,我收到错误通知。 以下是我的观点:
查看:
<table class="table table-striped table-bordered table-condensed" id="tablescroll" role="grid">
<thead>
<tr class="tablesorter-headerRow" role="row">
<th>No.</th>
<th>Nama</th>
<?php if(!empty($kunj->DIAG)){ echo "<th>ICD</th>"; } ?>
</tr>
</thead>
<tbody aria-live="polite" aria-relevant="all">
<?php if(!empty($kunj)) print_r(count($kunj));
if(!empty($kunj)){
$no = 0;
foreach ($kunj as $i): ?>
<tr align='center'>
<td><?php $no++; echo $no; ?></td>
<td><?php echo $i->NAMA; ?></td>
<?php if(!empty($i->DIAG)){ echo "<td>".$i->DIAG."</td>"; } ?>
</tr>
<?php endforeach ?>
<?php } ?>
</tbody>
</table>
控制器:
function kunjunganpx(){
$this->load->model('simrs/diagnosa_model');
$cari = array(
'icd' => $this->input->post('icd'),
'asr' => $this->input->post('asuransi'),
'tgl_strt' => $this->input->post('tgl_strt'),
'tgl_end' => $this->input->post('tgl_end'),
'stat' => $this->input->post('px_stat'),
'urut' => $this->input->post('urut'),
'opsi' => $this->input->post('opsi'));
$data['kunj'] = $this->diagnosa_model->get_kunjungan_list($cari);
$this->load->view('kunjunganpx_view',$data);
}
这是我得到的注意事项:
A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: simrs/kunjunganpx_view.php
通过Google搜索某个网站,我意识到无法使用empty()
检查对象数组。但我非常想知道如何解决这个问题,因为我在对象中生成了查询结果。
我只想知道如何隐藏&#39;当$ kunj-> DIAG没有价值时,ICD的硬拷贝。如果变量有一些值,则显示它。提前谢谢。
更新
根据会员的要求,我在此处附加var_dump($data);
结果:
array(1) { ["kunj"]=> array(2)
{ [0]=> object(stdClass)#21 (20)
{ ["NAMA"]=> string(13) "SUPRIYANTO BP"
["DIAG"]=> string(5) "D48.0" }
[1]=> object(stdClass)#22 (20)
{ ["NAMA"]=> string(13) "SUPRIYANTO BP"
["DIAG"]=> string(5) "C44.9" }
}
}
答案 0 :(得分:0)
if($kunj->DIAG != ''){ echo "<th>ICD</th>"; } ?>
我认为这会解决它,因为有些时候
正如我所看到的那样,或者未说明,你不会得到 null 的值,但是在你的变量中为空。
答案 1 :(得分:0)
可以试试这个:
if (is_object($kunj) && !empty($kunj->DIAG)) {
// do your stuff
}
答案 2 :(得分:0)
好的......基于$kunj=array()
这就是我想出的事实。
empty()
不起作用,因为该对象具有属性。如果它具有该属性,那么您需要解析额外的列。
您需要测试对象中是否存在DIAG属性。
if (property_exists($kunj[0], "DIAG"))
之后,您可以测试$kunj
是否为空,就像您正在做的那样。在foreach循环中,您将再次必须在解析额外表格单元格之前对属性进行测试。如果该属性存在,则不必测试为空。
我也改变了你的一些逻辑。这一切都导致了这一点:
<table class="table table-striped table-bordered table-condensed" id="tablescroll" role="grid">
<thead>
<tr class="tablesorter-headerRow" role="row">
<th>No.</th>
<th>Nama</th>
<?php
if (property_exists($kunj[0], "DIAG")) {
echo "<th>ICD</th>";
}
?>
</tr>
</thead>
<tbody aria-live="polite" aria-relevant="all">
<?php if(!empty($kunj)){ foreach ($kunj as $k => $i): ?>
<tr align='center'>
<td><?php echo ++$k; ?></td>
<td><?php echo $i -> NAMA; ?></td>
<?php
if (property_exists($kunj[0], "DIAG")) {
echo "<td>{$i->DIAG}</td>";
}
?>
</tr>
<?php endforeach; } ?>
</tbody>
</table>
codepad示例:http://codepad.viper-7.com/3Jxi7k
答案 3 :(得分:0)
我遇到此问题,而 is_null 是解决方案
尝试一下:
if(!is_null($kunj->DIAG)){echo "<th>ICD</th>";}