在php中获取空对象的属性

在php中获取空对象的属性,php,wordpress,Php,Wordpress,我正在wordpress插件中从数据库中抓取一行,使用: $ongoing_event = $wpdb->get_row('select * from wp_em_ongoing where event_id='.$EM_Event->id); 这会将第一行作为对象返回 稍后,我有一些复选框,我想检查db中是否存在值: e、 g /> 但是,如果该行不存在,我会得到一个错误,因为它找不到空对象的属性 我已经做了以下工作,但不确定是否有更好的方法: <input typ

我正在wordpress插件中从数据库中抓取一行,使用:

$ongoing_event = $wpdb->get_row('select * from wp_em_ongoing where event_id='.$EM_Event->id);   
这会将第一行作为对象返回

稍后,我有一些复选框,我想检查db中是否存在值:

e、 g

/>
但是,如果该行不存在,我会得到一个错误,因为它找不到空对象的属性

我已经做了以下工作,但不确定是否有更好的方法:

<input type="checkbox" value="1" name="week_1" 
    <?php if ($ongoing_event && $ongoing_event->week_1==1) echo 'checked="checked"' ?> />
/>
我将有许多输入字段,我需要检查这种方式

编辑:我显示的最后一行已经工作了。然而,我在页面中有很多这样的复选框。我希望能找到一种方法,不必每次都检查对象是否为空

我的意思是,有没有一种方法可以让我使用以下代码块而不会出错:

<input type="checkbox" value="1" name="week_1" 
    <?php if ($ongoing_event->week_1) echo 'checked="checked"' ?> />
/>

如果你担心杂乱,那么你可以使用短开放标签。像这样:

<?= ($ongoing_event && $ongoing_event->week_1 == 1) ? 'checked="checked"' : ''; ?>
之后,您可以将
if
语句修改为如下内容:

<?= ($set && $ongoing_event->week_1 == 1) ? 'checked="checked"' : ''; ?>

否则,如果复选框都按顺序编号,则使用循环:

<?php for ($ctr = 0; $ctr <= $amountOfWeeks; $ctr++): ?>
    <?php $week = 'week_' . $ctr; ?>
    <input type="checkbox" value="1" name="<?= $week; ?>" 
        <?= ($set && $ongoing_event->$week == 1) ? 'checked="checked"' : ''; ?>
<?php endfor; ?>

我主要使用
if(empty($var))
来检查var是否为空(需要专家来确认这是否对对象同样有效…)


但和其他人一样,我不确定您是否想知道对象为何为空,或者如何检查其是否为空…

在尝试访问它之前,您始终可以使用PHP func isset()确定它是否存在:

if (isset($ongoing_event->week) && $ongoing_event->week_1==1)
在您第一次进行数据库调用并将其放入一个易于理解的变量之后,我会在顶部附近执行所有这些操作,如下所示:

$weekIsOne = isset($ongoing_event->week) && $ongoing_event->week_1 == 1 ? 'checked = "checked"' : "";

并在输入元素标记内回显下面的$weekIsOne。

我不明白您在问什么。一种检查空对象的方法,或者为什么会有错误?我只是想知道是否有更好的方法。按照我的方式,我每次都必须检查它是否存在。检查它是否只存在一次会很好。它在对象上应该可以正常工作,这取决于您检查的内容是否为空。问题是我有很多复选框,第二个参数对每个人都不同。这不完全是我要找的,或者任何我不知道的东西。但我想我要找的东西不存在。
if (isset($ongoing_event->week) && $ongoing_event->week_1==1)
$weekIsOne = isset($ongoing_event->week) && $ongoing_event->week_1 == 1 ? 'checked = "checked"' : "";