null并不意味着它没有设置吗? - PHP对象

时间:2013-10-01 17:55:50

标签: php mysql sql isset

我有一个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,但是PHP的isset()都像 NO,你没有设置

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

2 个答案:

答案 0 :(得分:1)

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

if (property_exists($model, $column) {
    ...
}

答案 1 :(得分:0)

只要对某个变量进行赋值,

isset就会返回true。执行$somevar=NULL;时(在这种情况下,这是一项作业),if(isset($somevar) { echo "Inside"; },“内部”将永远不会打印。由于NULL永远不会被视为价值。