mam tej tablicy stogu siana:Recursive wyszukiwania w tablicy PHP ze ścieżką
$array = [
[
"name" => "Intro",
"id" => "123",
"children" => [
"name" => "foo",
"id" => "234",
"children" => [
"name" => "mur",
"id" => "445",
]
]
],[
"name" => "chapter one",
"id" => "9876",
"children" => [
"name" => "foo",
"id" => "712",
"children" => [
"name" => "bar",
"id" => "888",
]
]
]
];
i to igła tablicy: $needle = ["chapter one","foo","bar"]
pracuję nad rekurencyjnej funkcji wyszukiwania, które zwróci wartość id
z następujących dopasowanie elementu potomnego na kolumnie name
podążając ścieżką $needle
.
W tym przykładzie powinien powrócić 888
. Mam to do tej pory, ale nie wiem jak śledzić ścieżkę $ igły, w przeciwieństwie do wyszukiwania wartości przy założeniu, że są unikatowe. Doceniam każdą pomoc, ustawiając mnie na właściwej drodze.
function searchTree($needle, $haystack, $strict=false, $path=array())
{
if(!is_array($haystack)) {
return false;
}
foreach($haystack as $key => $val) {
if(is_array($val) && $subPath = searchTree($needle, $val, $strict, $path)) {
$path = array_merge($path, array($key), $subPath);
return $path;
} elseif((!$strict && $val == $needle) || ($strict && $val === $needle)) {
$path[] = $key;
return $path;
}
}
return false;
}
Zakładam, ponieważ jest rekurencyjne, że '$ needle' może pomieścić nieskończone wartości czy zawsze będzie 3? – Darren
@Darren nieskończenie wiele wartości. Elementy na tym samym poziomie tablicy mają unikalne nazwy. – greener