快速查询PHP多维数组父键与值的索引函数实现

0 下载量 9 浏览量 更新于2024-08-30 收藏 55KB PDF 举报
在PHP中,处理多维数组时,有时候我们需要快速查找一个特定键的父键及其对应的值。这个问题可以通过递归遍历和创建索引来解决。给定的代码示例提供了一个名为`indexKey`的函数,该函数的主要目的是在多维数组中根据键名查找父键及其值。 首先,我们定义了一个多维数组`$arr`,包含了中国的省份(如北京、上海)及其下属区域。数组结构如下: ``` $arr = array( 'china' => array( 'name' => '中国', 'cite' => array( 'beijing' => array( 'name' => '北京', 'site' => array('chaoyang' => '朝阳区', 'xuanwu' => '宣武区') ), 'shanghai' => array( 'name' => '上海', 'site' => array('jingan' => '静安区', 'huangpu' => '黄浦区') ) ) ) ); ``` `indexKey`函数接受两个参数:数组 `$data` 和可选的当前父键 `$parent`。在函数内部,我们初始化一个空数组 `$arr`,然后使用 `foreach` 循环遍历输入的数组。对于每个键值对,我们将当前键设置为父键,并检查值是否为数组。如果是数组,递归调用 `indexKey` 函数并将当前键作为新父键。 递归调用会一直进行,直到遇到非数组元素,然后将结果合并到 `$arr` 中。最后,函数返回一个关联数组,其中键是原始数组中的键,值是这些键的完整路径,直到顶级数组。 当调用 `indexKey($arr)` 时,输出的结果如下: ``` Array ( [china] => china [cite] => china [beijing] => cite [site] => beijing [chaoyang] => site [xuanwu] => site [shanghai] => shanghai ) ``` 这个数组表示了从根键 `'china'` 开始,依次经过 `'cite'`、`'beijing'` 和 `'site'`,最后到达 `'chaoyang'` 的路径。通过这个结构,我们可以轻松地查询任何键的父键和父键值。这个方法不仅适用于此特定的多维数组结构,而且可以灵活地扩展到其他复杂的数组情况。