0

我将数组作为参数中的字符串传递给 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 和反序列化,但没有成功。我可能在这里做错了什么。

4

1 回答 1

1

好吧,在您的查询字符串中进行一些更改,您传入 api 请求。

假设下面是你的数组。

$array = array('done' => 1, 'message' => 'success');

带有一些自定义的USEarray_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 ;

现在print_r($_GET)在您的 API 页面中使用,您将收到如下数据

Array
(
    [done] => 1
    [message] => success
)

这使您的代码在 if 条件或 sql 查询中易于处理和使用。

于 2017-07-28T08:55:58.750 回答