我将一个数组作为参数中的字符串传递给php中的api,如下所示:
http://xx.xx.xx.xx/api.php?query="array(done = 1)"
在我的api文件中,我使用此数组来查找mongodb查询:
$query = $_REQUEST['query'];
$cursor = $collection->find($query);
但是这没用。当我将array(done = 1)
硬编码到find
查询中时,它似乎工作正常。
if (array('done' => 1) == $query) {
echo "Y";
}
else {
echo "N";
}
以上代码打印N
。所以我想这是因为$query
作为字符串传递。
PS:我也尝试了json_encode,json_decode和unserialize,但它没有用。我可能在这里做错了。
答案 0 :(得分:1)
在您的查询字符串中进行位更改,您传入api请求。
假设下面是你的数组。
$array = array('done' => 1, 'message' => 'success');
使用array_map_assoc
函数进行一些自定义,这很容易破坏关联数组
function array_map_assoc( $callback , $array ){
$r = array();
foreach ($array as $key=>$value)
$r[$key] = $callback($key,$value);
return $r;
}
生成要在api中发送的数据 我们的数据
$queryString = implode('&',array_map_assoc(function($k,$v){return "$k=$v";},$array));
现在使用API发送您的数据
$url = "http://xx.xx.xx.xx/api.php?" . $queryString ;
现在在您的API页面中使用print_r($_GET)
,您将收到如下数据
Array
(
[done] => 1
[message] => success
)
这使得您的代码易于处理并在if条件或SQL查询中使用。