我有点像业余的php程序员,我正在寻找一个不能正常工作的if语句的帮助。
<?php
var_dump($_GET['name']);
var_dump($_GET['id']);
var_dump($search);
var_dump($param);
var_dump($raw);
var_dump($json);
// for debugging
error_reporting(E_ALL);
ini_set('display_errors', 'on');
// choose between either the name or id parameter
if(isset($_GET['name'])) {
$search = $_GET['name'];
}
elseif(isset($_GET['id'])) {
$search = $_GET['id'];
}
// build parameters for either name OR id
if (isset($_GET['name'])) {
$param = http_build_query(array(
'name' => $_GET['name'],
'getMembers' => 'yes',
'rand' => rand(),
));
}
elseif (isset($_GET['id'])) {
$param = http_build_query(array(
'id' => $_GET['id'],
'getMembers' => 'yes',
'rand' => rand(),
));
}
// get raw json from server
$raw = file_get_contents("https://example.com/file.php?".$param);
// decode the raw json response
$json = json_decode($raw);
... ?>
请注意我是如何将vars转储到第三行以进行调试的。 $search
,$param
,$raw
和$json
每次都返回NULL。我认为它与if语句有关,但我无法弄清楚我的生活是什么。非常感谢帮助。干杯!
编辑:
好!我们到了某个地方!我将var_dump($json);
向下移动了一半,结果导致混乱:
object(stdClass)#2 (2) { ["guild"]=> object(stdClass)#1 (11) { ["guild_id"]=> string(3) "182" ["guild_name"]=> string(7) "Jiggmin" ["creation_date"]=> string(19) "2013-05-07 10:32:02" ["active_date"]=> string(19) "2013-05-07 10:32:02" ["member_count"]=> string(1) "1" ["emblem"]=> string(18) "default-emblem.jpg" ["gp_total"]=> string(1) "0" ["gp_today"]=> string(1) "0" ["owner_id"]=> string(7) "1939717" ["note"]=> string(13) "Hehe, trolls." ["active_count"]=> string(1) "0" } ["members"]=> array(1) { [0]=> object(stdClass)#3 (6) { ["user_id"]=> string(7) "1939717" ["name"]=> string(11) "snuppaper97" ["power"]=> string(1) "1" ["rank"]=> string(2) "23" ["gp_today"]=> NULL ["gp_total"]=> NULL } } }
然后我尝试在第58行做echo $json;
并得到了这个怪物:
**Recoverable fatal error:** Object of class std class could not be converted to string in /Path/To/File.php on line 58
答案 0 :(得分:0)
它们位于脚本的顶部,所以这些vars尚未被定义!
var_dump($search);
var_dump($param);
var_dump($raw);
var_dump($json);
在你将它们设置为某种东西之前,它们总是会为空! vars应该来自哪里?移动下面的var_dump,你可能会开始看到东西: - )
编辑:现在你有一个stdClass的对象。要对json进行编码,我们必须将其转换为数组!它很简单:
$array = (array) $object;
$json = json_encode($array);
答案 1 :(得分:0)
isset($_GET['name'])
使用array_key_exists('name', $_GET)
,因为isset($_GET['name'])
如果设置为NULL则返回false,如果您不想要null,则显式添加null !== $_GET['name']
,这样你就可以确切地知道代码在做什么。您的参数似乎没有默认值,例如,如果没有设置任何参数,则不会有新的参数字符串构建
您能为我们提供示例网址以及构建网址的代码吗?或使用$param