我有一个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值通过?
答案 0 :(得分:1)
如果您想知道对象属性是否存在,无论其值如何,您都可以使用property_exists
。
if (property_exists($model, $column) {
...
}
答案 1 :(得分:0)
isset
就会返回true。执行$somevar=NULL;
时(在这种情况下,这是一项作业),if(isset($somevar) { echo "Inside"; }
,“内部”将永远不会打印。由于NULL
永远不会被视为价值。