-1

我有一个 php 对象,它有一个类似的key=>value东西[ipAddress] = 'NULL'

如果我这样做:

if(isset($object->ipAddress)){
     echo "I am set!!!";
}

它从不回声。因为显然它不是“设置”。我给他们的印象是它是设置的,因为他经常说 NULL。

有没有办法绕过这个说,你准备好了?没有实际给它一个价值?我问是因为我试图编写这样的函数:(不要介意调试,是调试导致我提出这个问题)

private function checkForColumnInModelObject($modelObject, $column, $custom_name){
    $relationship = array();
    foreach($modelObject as $model){
        if(isset($model->$column)){
            $value_returned = $model->$column;
            var_dump($column);
            var_dump($custom_name);
            var_dump($value_returned);
            //$relationship[$custom_name] = $value_returned;
        }
    }

    //return $this->toObj($relationship);
}

所以我在这里要做的是检查模型对象中的列。现在你可能会得到一个列数组,我们在一个调用它的函数中遍历它,以及一个不同模型对象的数组。试图查看模型对象是否具有该列。

例如:

 Does equipmentModel have ipAddress Column? yes? fetch me the value.

我们这样做的方法是说“是这个模型集上的列”。问题是,我们可能有具有 NULL 值的列......假设它们的集合,它们的值只是 null,但 PHPisset()就像NO,you are not set一样。

关于如何编写此代码以保持相同逻辑的任何想法,但假设模型具有该特定列,则允许 null 值通过?

4

2 回答 2

1

如果您想知道对象属性是否存在,无论其值如何,都可以使用property_exists.

if (property_exists($model, $column) {
    ...
}
于 2013-10-01T18:02:37.820 回答
0

isset每当您对某个变量进行赋值时,都会返回 true。当您这样做时$somevar=NULL;(在这种情况下,它是一个作业), if(isset($somevar) { echo "Inside"; }“内部”将永远不会打印。因为NULL从不被认为是一个值。

于 2013-10-01T18:01:01.157 回答