2015-08-29 23 views
0

我正在一个名为curl_pair($ json_pair_filename)的PHP函数中使用JSON字符串。 var_dump正确显示了函数中的数据,因此数据存在于函数中,但我无法访问PHP函数之外的JSON字符串。我应该改变什么?无法访问PHP函数之外的JSON字符串?

if(curl_exec($ch) === false) 
    { // Curl error: 
     //echo '<a target="_blank" href="http://curl.haxx.se/libcurl/c/libcurl-errors.html">' . curl_error($ch) . "</a>"; 
     include(DOMAIN_PATH . "tickers/form_curl_error.php"); 
     $my_data = "something went wrong..."; 
    } 
    else // fetch the data 
    { 
     $my_data = curl_multi_getcontent ($ch); 
     //var_dump($my_data); // is ok shows json string 
     curl_close($ch); 
    } 
    return json_encode($my_data); 
} 
curl_pair($json_pair_filename); // no errors 

echo($my_data); // just a white screen, no data, no nothing. 

回答

1

我认为你需要捕获你的函数的输出,或者在你的echo中嵌套函数调用。我不是PHP开发人员,但是在大多数编程语言中,在函数内部声明的变量对函数来说是私有的,所以$ my_data不存在于外部。但是你从你的功能返回它,所以

$result_data = curl_pair($json_pair_filename); 
echo($result_data); 

应该工作。

+0

谢谢Balrog30你的代码第一次工作。 – 1888software

0

请尝试执行以下代码段。

在上面的代码片段中,$ my_data变量的范围在其设置的函数内。 要让它在函数外部可访问,您需要在调用该函数的位置返回值。

if(curl_exec($ch) === false) 
    { // Curl error: 
     //echo '<a target="_blank" href="http://curl.haxx.se/libcurl/c/libcurl-errors.html">' . curl_error($ch) . "</a>"; 
     include(DOMAIN_PATH . "tickers/form_curl_error.php"); 
     $my_data = "something went wrong..."; 
    } 
    else // fetch the data 
    { 
     $my_data = curl_multi_getcontent ($ch); 
     //var_dump($my_data); // is ok shows json string 
     curl_close($ch); 
    } 
    return json_encode($my_data); 
} 
$my_data=curl_pair($json_pair_filename); // no errors 

echo($my_data); // just a white screen, no data, no nothing. 
+0

谢谢你鲁宾你是对的,这是一个可变范围的问题。欣赏回应。 – 1888software