我正在尝试这样的事情:
public function search() {
$criteria = new CDbCriteria;
$criteria->compare('user_details_id', $this->user_details_id);
$criteria->compare('user_type_id', $this->user_type_id);
$criteria->compare('customer_basics_id', $this->customer_basics_id);
$criteria->compare('user_address_id', $this->user_address_id);
$criteria->compare('user_city_id', $this->user_city_id);
$criteria->compare('is_active', $this->is_active);
$criteria->compare('create_dttm', $this->create_dttm, true);
$criteria->compare('update_dttm', $this->update_dttm, true);
// if condition is working
if (isset($_GET['ulip'])) {
$criteria->addCondition(
"customer_basics_id=" . CustomerBasics::getCustomerBasicsId(Yii::app()->session['user_id']), "AND"
);
$criteria->addCondition("user_city_id IS NULL");
// else condition is working
} else {
$criteria->addCondition(
"customer_basics_id=" . CustomerBasics::getCustomerBasicsId(Yii::app()->session['user_id']), "AND"
);
$criteria->addCondition("user_city_id IS NOT NULL");
}
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
'pagination' => array(
'pageSize' => 10,
),
));
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是 …
定义PHP中不存在值的最佳方法是什么,或者不足以满足应用程序需求.
$var = NULL,$var = array(),$var = FALSE?
什么是最好的测试方法?
isset($var),empty($var),if($var != NULL),if($var)?
将变量初始化为它们将会是什么,例如,NULL如果字符串,array()如果它们将是数组,则具有一些好处,因为它们将在它们所处的设置中起作用而没有任何意外结果.
例如,foreach($emptyArray)不会抱怨它不会输出任何东西,而foreach($false)会抱怨错误的变量类型.
但它有点不必要的麻烦,因为有很多不同的做法基本上是相同的.例如.if(empty($var))要么if ($var == NULL)