我需要检查,如果一个对象为空或PHP具有价值和研究,我跟这个代码后:检查对象为空或有值
$user = $this->client->findClientByLogin(array("login" => $user_data[0]->username));
if (!is_object($user) && (count(get_object_vars($user)) < 0)) {
$this->client->addClient(array("login" => $user_data[0]->username, "password" => $password));
}
但即使$user
是一个空的对象由于条件不适用,addClient()
未执行。任何人都可以给我一些建议吗?
编辑:Test1的
我使用此代码做了一些测试:
echo "Count ".count(get_object_vars($user));
echo "Is object ".!is_object($user);
var_dump($user);
die();
,结果是: 计数: 比较对象:1
object(stdClass)[78]
public 'clientsshared' =>
object(stdClass)[160]
public 'id_client' => int 44
public 'login' => string 'reynierperez-mira' (length=17)
public 'password' => string '' (length=0)
public 'web_password' => string '09bb0def8de1262ac9e5a9b8a5935771' (length=32)
public 'type' => int 8389121
public 'id_tariff' => int 2
public 'account_state' => string '0.0000' (length=6)
public 'tech_prefix' => string '' (length=0)
public 'id_reseller' => int -1
public 'type2' => int 0
public 'type3' => int 0
public 'id_intrastate_tariff' => int -1
public 'id_currency' => int 1
public 'codecs' => int 19
public 'primary_codec' => int 2
public 'free_seconds' => string '' (length=0)
public 'id_tariff_vod' => int 0
public 'video_codecs' => int 0
public 'video_primary_codec' => int 0
public 'fax_codecs' => int 0
public 'fax_primary_codec' => int 0
public 'id_cli_map' => int 0
public 'id_dial_plan' => int 1
public 'id_dial_plan_map' => int 1
public 'id_pbx_company' => int 0
使告诉我,用户reynierperez-mira
已经存在,所以我不应该输入条件因为我不会添加任何用户,但如果用户不存在,那么我将通过在条件上输入来添加。这个案件有什么合适的条件?
的Test2:用户不存在
好吧,我删除所有用户,以便findClientByLogin()
回报空的对象。我测试了这种方式:
$user = $this->client->findClientByLogin(array("login" => $user_data[0]->username));
echo "Count " . count(get_object_vars($user));
echo "Is object " . is_object($user);
echo "-----------";
var_dump($user);
die();
这是输出:
Count 0
Is object 1
-----------
object(stdClass)[78]
所以我改变了条件:
if (is_object($user) && (count(get_object_vars($user)) === 0)) { ...
而现在它的作品!
'count()'永远不会返回小于0. – Barmar