PHP如何在多维数组中搜索另一个多维数组中的键记住父键

PHP如何在多维数组中搜索另一个多维数组中的键记住父键,php,arrays,search,multidimensional-array,Php,Arrays,Search,Multidimensional Array,我尝试在多维数组中查找键的值,同时也匹配父键 例如: array('dates\published\firstedition', '12/22/22'); array('firstedition', '99/99/99'); 数组1-我试图找到的值的键数组 $array1 = array( 'title', 'metadata' => array('size', 'mime'), 'dates' => array('published' =&

我尝试在多维数组中查找键的值,同时也匹配父键

例如:

    array('dates\published\firstedition', '12/22/22');
    array('firstedition', '99/99/99');
数组1-我试图找到的值的键数组

$array1 = array(
    'title',
    'metadata' => array('size', 'mime'),
    'dates' => array('published' => 
                    array('firstedition' => '12/22/22', 
                        'secondedition' => '22/22/22', 
                        'thirdedition'),
    'description',
    'mime'
 );
数组2:我正在数组1中搜索键的数组

$array2 = array(
    'title' => 'hello',
    'metadata' => array('size' => '22', 'mime' => 'text/html'),
    'dates' => array('published' => 
                    array('firstedition' => '12/22/22', 
                        'secondedition' => '22/22/22', 
                        'thirdedition' => '22/22/14'),
    'type' => 'book',
    'description' => 'This is a description',
    'mime' => 'something/pdf',
    'firstedition' => '99/99/99'
 );
数组1中的所有值都是我想在数组2中找到的键。如果数组1中的值是一个数组,我想在数组2中分别找到父数组中的值

例如:

    array('dates\published\firstedition', '12/22/22');
    array('firstedition', '99/99/99');
阵列1: 元数据->大小

搜索数组2返回: 二十二


阵列1: 元数据->Mime

搜索数组2返回: 文本/html


阵列1: 默剧

搜索数组2返回: 某物/pdft


阵列1: 日期->出版->第一版

数组2返回:

12/22/22 阵列1: 初版

数组2返回: 99/99/99

注意“dates->published->firstedition”和“firstedition”之间的输出差异。因此,我想搜索数组1中的所有值作为键,以便在数组2中查找并显示它们,如下所示:

键->可能子键->可能子键:值

如果可能,返回一个包含键和值路径的数组,例如:

    array('dates\published\firstedition', '12/22/22');
    array('firstedition', '99/99/99');
另外,Array1是更大数组的一部分,具有不同的文件类型,Array1位于键“books”下,array2中的键“type”下,因此根据array2是什么类型,array2中的键的值可能会有所不同。例如,在array1中,可能还有一些“歌曲”,我希望它们有一组不同的值,例如“比特率”,但我不想寻找“firstedition”,因为它不存在

我已经发布了这个示例,因为我已经设法确定了array2是什么类型,并找到了相应的键,该键输出了我发布为array1的内容


任何帮助都将不胜感激,因为我似乎无法解决这个问题。

我通过使用以下函数将数组挤压到路径来实现这一点:

public static function convertToPaths($myArray)
{
    $ritit = new RecursiveIteratorIterator(new RecursiveArrayIterator($myArray));
    $result = array();
    foreach ($ritit as $leafValue) {
        $keys = array();
        foreach (range(0, $ritit->getDepth()) as $depth) {
            $keys[] = $ritit->getSubIterator($depth)->key();
        }
        $result[ join('.', $keys) ] = $leafValue;
    }
    return $result;
}

它将数组和值作为路径返回,例如“dates.published.firstedition”-然后我可以通过使用in-array函数访问信息并检查它是否存在。

当您设置数组1时,您知道值是什么,数组2中的键是什么,您需要数组1吗?你不能用你想要的键/值访问(或
foreach()
)array2吗?你能举个例子吗?另外,Array1是更大数组的一部分,具有不同的文件类型,Array1位于键“books”下,array2中的键“type”下,因此根据array2是什么类型,array2中的键的值可能会有所不同。例如,在array1中,可能还有一些“歌曲”,我希望它们有一组不同的值,例如“比特率”,但我不想寻找“firstedition”,因为它不存在。我已经更新了我的问题,以便进一步理解。