在API调用中将字符串转换为数组

时间:2017-07-28 08:29:11

标签: php arrays mongodb php-mongodb

我将一个数组作为参数中的字符串传递给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,但它没有用。我可能在这里做错了。

1 个答案:

答案 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查询中使用。