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”,因为它不存在。我已经更新了我的问题,以便进一步理解。