可以使用递归函数或者array_walk_recursive()函数来实现。
function searchValue($array, $value) {
foreach ($array as $key => $item) {
if ($item === $value) {
return $key;
}
if (is_array($item)) {
$result = searchValue($item, $value);
if ($result !== false) {
return $key . '.' . $result;
}
}
}
return false;
}
$array = array(
'a' => array(
'b' => array(
'c' => 'value'
)
)
);
$result = searchValue($array, 'value');
if ($result !== false) {
echo '找到值的路径:' . $result;
} else {
echo '未找到值';
}
上述代码中,searchValue()函数接受一个多维数组和要查找的值作为参数。它使用foreach循环遍历数组,如果找到了目标值,就返回对应的键名。如果当前元素是一个数组,就递归调用searchValue()函数来继续查找。如果未找到目标值,返回false。
function searchValue($value, $key, $search) {
if ($value === $search) {
echo '找到值的路径:' . $key . PHP_EOL;
}
}
$array = array(
'a' => array(
'b' => array(
'c' => 'value'
)
)
);
array_walk_recursive($array, 'searchValue', 'value');
上述代码中,searchValue()函数被array_walk_recursive()函数调用,它接受三个参数:当前元素的值、当前元素的键名、要查找的值。如果当前元素的值等于要查找的值,就输出对应的键名。
这两种方法都可以用于在PHP中查找多维数组中的值。具体选择哪种方法取决于个人偏好和代码结构。
算法大赛
云+社区沙龙online第5期[架构演进]
云+社区沙龙online [技术应变力]
云+社区沙龙online [国产数据库]
云+社区沙龙online [新技术实践]
领取专属 10元无门槛券
手把手带您无忧上云