获取函数中返回的结果


get results returned in a function

我在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';
}