我在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);
}
}
您的主要问题似乎是您正在调用具有 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';
}
请注意,PHP 给出了两条错误/警告消息:
E_WARNING : 类型 2 -- 缺少域名检查(( 的参数 2
E_NOTICE:类型 8 -- 未定义的变量:元素
您应该修复这些错误,并确保在开发过程中被告知错误。
其次,您通过分配 "false"
、"true"
或 "unknown"
将可用性定义为字符串。因此,当您执行此操作时:
if($domain->availability) {
。对于所有三个值都是如此,因为字符串在转换为布尔值时对于 PHP 都是正确的(空时除外(。为了说明这一点,这将echo
"你好":
if ("false") echo "hello";
所以你需要像这样改变你的测试:
if($domain->availability === "true") {
或者,如果要将$domain->availability
定义为真正的布尔值,则需要更改函数中的赋值,如下所示:
....
$availability = $obj->available; // assuming that is a boolean!
}
else {
$availability = null; // unknown
}
。然后你可以做你所拥有的:
if($domain->availability) {
可能是因为$domain->可用性是布尔值
要输出,您可以先检查其真还是假,并相应地输出
下面是一个简单的示例:
if ($domain->availability){
echo 'Available';
}
else {
echo 'Not Available';
}