我有一个从JSON结构转换而来的大数组,其中包含未知数量的元素和子元素。递归遍历PHP多维数组进行比较
喜欢的东西:
$marr = array
(
"Order" => array
(
"Details" => array
(
"Document" => array
(
"Number" => "1585636772",
"Date" => "2014-12-31"
),
"Delivery" => array
(
"Date" => "2015-01-02",
"TrackingCode" => "5703",
"Name" => "Example Name",
"Address" => "Example Address"
)
)
)
);
而在另一方面,我有我需要比较,并找出他们是否在数组中上述项目的数组。这个“索引器”将总是镜像上面的相同结构(它是在比较步骤之前生成的),因为我认为这会帮助我以更简单的方式确保正确的比较。
喜欢的东西:
$indexer = array
(
"Order" => array
(
"Details" => array
(
"Document" => array
(
"Date" => "variable_name_1"
),
"Delivery" => array
(
"Date" => "variable_name_2"
)
)
)
);
我并不完全确定如何最好地比较这些。我已经调查array_walk_recursive()仅返回叶值,我试图写一个基本的递归函数我自己的努力,将执行的foreach()然后会尝试做一些事情,如:
if(isset($marr["Order"]["Details"]["Document"]["Date"]))
{
$store[ $indexer["Order"]["Details"]["Document"]["Date"] ] = $marr["Order"]["Details"]["Document"]["Date"];
}
因此,在结束我会存储这是在$索引上市的别名下的$马尔找到的所有值的基本数组。就像这样:
$store["variable_name_1"] = "2014-12-31";
$store["variable_name_2"] = "2015-01-02";
这已经两天头疼,现在我似乎无法弄清楚要经过这一点的最好办法。我试图走过$ indexer达到它的结尾,获得“变量名”,然后与$ marr比较来存储它的数据,但我总是似乎失去了$ indexer的父节点,同时试图以递归方式执行此操作。我会很感激任何建议。
你怎么' “variable_name_1”'两?这些名字很重要吗? – Kalkran
不确定,为什么你需要一个递归函数..只需创建一个嵌套循环 – Philipp
@Kalkran这些名称在$ indexer中,它们在理论上是需要的,因为我想从JSON Web服务中存储数据以用于一堆SQL查询。他们仅仅是这里的例子,在理论上我可以说,其中有20个用于五个不同的查询。但对于我正在尝试构建的应用程序而言,这是一个不同的逻辑步骤,我想这里与此无关。 – Ivo