Facebook Graph API嵌套的数组请求语法

时间:2016-04-04 01:04:25

标签: php arrays facebook-graph-api

我试图在PHP中复制Facebook的嵌套请求语法,将fields参数转换为多维数组。

/me?fields=name,updated_time,photos{name,source},likes{name,link},events.limit(4){name,start_time,end_time,photos}

会导致某些事情......

Array
(
    [name]
    [updated_time]
    [photos] => Array
        (
            [name] 
            [source] 
        )
    [likes] => Array
        (
            [name] 
            [link] 
        )
)

1 个答案:

答案 0 :(得分:0)

了解如何使用循环匹配图API。决定最好保留过滤器,并将修改器限制为对象的一部分,以保持阵列尽可能干净

     $a = $input;
     $output = array();
     $outputStacktrace = array(&$output);
     $depth = 0;
     $buffer = $key = '';
     $m = memory_get_usage();
     for ($i = 0; $i < strlen($a); $i++)
                 if ($a[$i] == ',') {
             if (strlen($buffer))
                            if($depth == 0){
                                if(is_array($outputStacktrace[0]) && empty($outputStacktrace[0])){
                                    $outputStacktrace[$depth][$buffer] = array();
                                }
                            } else {
                 $outputStacktrace[$depth][$key ? $key : count($outputStacktrace[$depth])] = $buffer;
                            }
                         $buffer = $key = '';
         } elseif ($a[$i] == '{') {
             $outputStacktrace[$depth][$buffer] = array();
             $outputStacktrace[$depth + 1] = &$outputStacktrace[$depth][$buffer];
             $depth++;
             $buffer = '';
         } elseif ($a[$i] == '}') {
             if (strlen($buffer))
                 $outputStacktrace[$depth][$key ? $key : count($outputStacktrace[$depth])] = $buffer;
             $buffer = $key = '';
             unset($outputStacktrace[$depth]);
             $depth--;
         } else {
             $buffer .= $a[$i];
                 }
                 if( $buffer!='' )
                $outputStacktrace[$depth][$key ? $key : count($outputStacktrace[$depth])] = $buffer;

                 return ($output);