将逻辑字符串数组解析为另一个人类可读对象

时间:2016-10-26 13:42:27

标签: php arrays

我正在尝试使用递归函数将数组解析为逻辑结构,到目前为止,只有近距离遇到。

这是我收到的:

[
 "1921",
 "AND",
 "(",
 "1923",
 "OR",
 "(",
 "1925",
 "AND",
 "1924",
 ")",
 ")"
]

这就是我必须获得的:

{
 terms: ["1921", {
  terms: ["1923", {
   terms: ["1925", "1924"],
   operator: "AND"
  }],
  operator: "OR"
 }],
 operator: "AND"
}

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:6)

我将它作为状态机来处理它,它存储当前索引并逐项递归地迭代数组。

<?php defined('BASEPATH') OR exit('No direct script access allowed');
 class Test extends CI_Controller
 {
  public function check()
  {
   $data = array("data" => "true", "m" => "message");
   Header('Content-Type: application/json');
   echo json_encode($data);
  }
 }
?>

你会得到你所需要的。

将此重写为递归函数需要使用全局变量,但原理类似。