dongnianwo8289 2017-07-28 08:29
浏览 102

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

I am passing an array as a string in parameter to an api in php like this:

http://xx.xx.xx.xx/api.php?query="array(done = 1)"

In my api file, I have used this array to hit a mongodb query:

$query = $_REQUEST['query'];
$cursor = $collection->find($query);

But this didn't work. When I hard-coded array(done = 1) into the find query, it seems to work fine.

if (array('done' => 1) == $query) {
  echo "Y";
}
else {
  echo "N";
}

The above code prints N. So I guess it's because $query is being passed as a string.

PS: I also tried json_encode, json_decode and unserialize but it didn't work. I might be doing omething wrong here.

  • 写回答

1条回答 默认 最新

  • dqusbxh44823 2017-07-28 08:55
    关注

    Well make bit change in your query string, you passing in api request.

    Suppose belowis your array.

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

    USE array_map_assoc function with some customization, which make easy to implode associative array

    function array_map_assoc( $callback , $array ){
      $r = array();
      foreach ($array as $key=>$value)
        $r[$key] = $callback($key,$value);
      return $r;
    }
    

    Generate your data to be sent in api our data

    $queryString = implode('&',array_map_assoc(function($k,$v){return "$k=$v";},$array));
    

    Now send your data with API

    $url = "http://xx.xx.xx.xx/api.php?" . $queryString ;
    

    Now use print_r($_GET) in your API page and you will receive data like below

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

    This make your code easy to handle and use in either if condition or sql query.

    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退