2013-07-23 151 views
1

我正在通过在Json中编码的POST传递参数。我已经捕获了PHP文件中的参数。该JSON编码参数如下:如何检查POST中是否有任何参数在PHP中

{ 
    "id": "5", 
    "name": "abcd", 
    "imei": "1234" 
} 

首先,我已经抓获了他们如下:

$entityBody = file_get_contents('php://input'); 

然后,我已经破译它们如下:

$entityBody = json_decode($entityBody, true); 

现在我可以访问ID如下:

$entityBody['id'] 

我想知道说,如果有任何参数说''描述'在POST中存在。如果有人帮助我如何做到这一点,我将非常感激。谢谢。

+0

您可以使用['isset'(http://php.net/manual/en/function.isset.php)?例如'if(isset($ _ POST ['something']))...' – naththedeveloper

+1

也许你的意思是'$ entityBody = json_decode($ _ POST ['json'],true);'但是无论如何一切正常,什么是问题?访问它像'$ entityBody ['description']' – vladkras

+0

你想知道什么,如果_'description'出现在POST_中或_'description'出现在$ entityBody_中? – vladkras

回答

1

使用isset检查 '说明' 中是否存在POST或不

if(isset($_POST['description'])) { 
    //your code here 
} 

编辑

当您使用file_get_contents('php://input');,所以你必须使用

if (isset($entityBody['description'])) { 
    //your code here 
} 
+0

请重新阅读完整的问题。由于post参数被编码为JSON,所以它们不会被PHP自动解释,并且不会在'$ _POST'数组中。 – jcsanyi

+0

@jcsanyi我认为你没有正确地阅读这个问题,OP说''描述'是在POST中存在'不是在JSON中。 :) –

+0

在POST不同于$ _POST。 – jcsanyi

0

这其实和大多数其他答案一样简单 - 但你只需要检查你的$entityBody阵列,而不是$_POST阵列。

if (isset($entityBody['description'])) { 
    // do something 
} 

澄清那些仍然困惑,如果POST'ed数据是在标准的HTML形式的编码之一编码(应用程序/ x-WWW窗体-urlencoded或多部分/格式的数据),它将自动解码并在$_POST阵列中可用。

在这种情况下,OP是以自定义(json)格式POST'ing数据。这意味着$ _POST数组将是空的,他们必须manually read and decode the POST contents themselves--它看起来已经起作用了。

参见:What is the Raw Post Data

相关问题