我在php函数中有这个:
$result = new stdClass();
$result->domainname = $domainName;
$result->element = $element;
$result->availability = $availability;
return ($result);
所以它返回$result
变量
当我对函数执行print_r
时,结果显示如下:
stdClass Object
(
[domainname] => domain.com
[element] =>
[availability] => false
)
我用这段代码调用函数:
$domain = domainNameCheck($_GET["domain"].'.'.$_GET["tld"]);
所以我试图通过执行$domain->availability
来获取返回但是它没有返回值,例如:
if($domain->availability) {
echo 'yes';
} else {
echo 'no';
}
我试图以不正确的方式获取数据吗?
更新
完整的功能是:
if(!function_exists("domainNameCheck")) {
function domainNameCheck($domainName, $element) {
$result = '';
$client = new IcukApiClient();
$client->username = "username";
$client->key = "pass";
$client->encryption = "SHA-512";
$req = new IcukApiRequest();
$req->url = "/domain/availability/" . $domainName;
$req->method = "GET";
$res = $client->send($req);
$availability = 'unknown';
if ($res->success) {
$obj = json_decode($res->response);
$availability =($obj->available) ? 'true' : 'false';
}
else {
$availability = 'unknown';
}
$result = new stdClass();
$result->domainname = $domainName;
$result->element = $element;
$result->availability = $availability;
return ($result);
}
}
答案 0 :(得分:1)
请注意,PHP提供了两条错误/警告消息:
E_WARNING:类型2 - 缺少domainNameCheck()的参数2
E_NOTICE:输入8 - 未定义的变量:element
您应该修复这些错误,并确保在开发过程中informed of errors。
其次,您已通过分配"false"
,"true"
或"unknown"
将可用性定义为字符串。所以当你这样做时:
if($domain->availability) {
...对于所有三个值都是如此,因为当转换为布尔值时,PHP的字符串为真(除非为空)。为了说明这一点,echo
"你好":
if ("false") echo "hello";
所以你需要改变你的测试:
if($domain->availability === "true") {
或者,如果要将$domain->availability
定义为true布尔值,则需要更改函数中的赋值,如下所示:
....
$availability = $obj->available; // assuming that is a boolean!
}
else {
$availability = null; // unknown
}
...然后你可以做你所拥有的:
if($domain->availability) {
答案 1 :(得分:1)
您的主要问题似乎是您正在调用具有2个参数的函数,但只传递一个参数
function domainNameCheck($domainName, $element) {}
// called like this (one parameter)
$domain = domainNameCheck($_GET["domain"].'.'.$_GET["tld"]);
这应该是生成编译错误!
也在这里
if ($res->success) {
$obj = json_decode($res->response);
// check what $obj->available is set to
// it may also be a string and not a boolean
print_r($obj);
$availability =($obj->available) ? 'true' : 'false';
}
else {
$availability = 'unknown';
}
答案 2 :(得分:0)
可能因为$ domain->可用性为boolean
要输出,您可以先检查其是真还是假,并相应地输出
这是一个简单的例子:
if ($domain->availability){
echo 'Available';
}
else {
echo 'Not Available';
}