2016-04-04 102 views
0

我想在PHP中复制Facebook的嵌套请求语法,将字段参数转换为多维数组。Facebook图形API向阵列嵌套的请求语法

/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] 
     ) 
) 
+0

您在哪里坚持这样做? – Rizier123

+0

最好是在PHP循环?不明白你的意思 – Garrett

回答

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);