
本文旨在提供一个 PHP 数组深度遍历的解决方案,用于提取与指定键值相关联的所有值。通过递归地搜索数组,我们可以找到所有与目标键值直接或间接关联的值,并将它们整理成一个扁平化的数组。本文将提供详细的代码示例和解释,帮助开发者理解和应用该方法。
在处理多维数组时,有时我们需要找到与特定键值相关联的所有值,无论它们嵌套在数组的哪个层级。例如,给定一个数组,其中键表示某种标识符,而值可能是另一个标识符的数组,我们需要找到与某个初始标识符相关联的所有标识符。以下是一个实现此功能的 PHP 函数:
<?php
function deepArraySearch(int $targetKey, array $array): array
{
$result = [];
$visited = []; // 用于记录已访问的键,防止无限循环
function traverse(int $key, array $arr, array &$res, array &$visited): void
{
if (in_array($key, $visited)) {
return; // 防止无限循环
}
$visited[] = $key;
if (isset($arr[$key])) {
$values = $arr[$key];
if (is_array($values)) {
foreach ($values as $value) {
if (is_numeric($value)) { // 确保value是数字,避免其他类型导致错误
$res[] = $value;
traverse((int)$value, $arr, $res, $visited); // 递归调用,注意类型转换
}
}
}
}
}
traverse($targetKey, $array, $result, $visited);
return array_unique($result); // 移除重复的值
}
// 示例数组
$data = [
22 => [1074, 1926],
1772 => [1080, 1921],
1926 => [1772],
1080 => [1833],
];
// 调用函数
$targetKey = 1926;
$result = deepArraySearch($targetKey, $data);
// 输出结果
print_r($result); // 输出:Array ( [0] => 1772 [1] => 1080 [2] => 1921 [3] => 1833 )
?>代码解释:
注意事项:
立即学习“PHP免费学习笔记(深入)”;
总结:
这个函数提供了一种有效的方法来深度遍历 PHP 数组,并提取与指定键值相关联的所有值。通过使用递归和 $visited 数组,可以处理复杂的嵌套结构和循环引用,同时确保代码的健壮性和正确性。在实际应用中,可以根据具体的需求进行修改和优化,以满足不同的场景。
以上就是PHP 数组深度遍历:提取指定键值关联的所有值的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号