获取函数

时间:2016-05-11 21:49:36

标签: php

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

3 个答案:

答案 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';
}