我应该使用GET从网址到我的变量检索响应吗?

时间:2013-09-09 01:06:32

标签: php json

我想将用户提交的值从表单发送到网址。我正在使用PHP来实现这一目标。我正在编写的书,Larry Ullman的Web for PHP使用变量来存储表单值,如下所示:

$input = $_POST['value']; 

<form>
<input type="textbox" id="value">
<input type="submit" value="submit">
</form

接下来,我会将这些值发送到这样的网址

$req = "http://webaddress/?value=$input";

现在我想从网址获得一个json响应。 像这样:

$response = json_decode(file_get_contents($req));

这是我的问题。该响应如何从Web地址变为我的变量?

1 个答案:

答案 0 :(得分:1)

json_decode将有效的json字符串解码为数组。所以,json字符串看起来像

'{"a":1,"b":2,"c":3,"d":4,"e":5}' 

将以一个对应于您的json字符串的键/值对的数组结束,例如:

["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)

您可以传递json编码的字符串并通过$ _GET接收它们。 http_build_query为您完成此任务:

http_build_query

使用http_build_query,您将获得如下代码:

http_build_query(array('a' => array(1, 2, 3))) // "a[]=1&a[]=2&a[]=3"

http_build_query(array(

    'a' => array(
        'foo' => 'bar',
        'bar' => array(1, 2, 3),
     )
)); // "a[foo]=bar&a[bar][]=1&a[bar][]=2&a[bar][]=3"

然后你可以在$ _GET键上使用json_decode(在这种情况下,你在编码时设置$ _GET ['a']。如果不清楚,你会看到多个括号,例如[bar] ] [],这指的是一个多维数组。你不一定需要创建多个单维数组。

看看这个答案:

How to pass an array via $_GET in php?