Wyszukiwanie wartości w tablicach zagnieżdżonych z użyciem rekurencji (przeszukiwanie drzewiaste)
Założenie: Napiszemy funkcję rekurencyjną, która będzie przeszukiwała tablicę zagnieżdżoną w celu znalezienia określonej wartości.
Krok po kroku:
- Definicja funkcji rekurencyjnej: Funkcja przyjmuje tablicę i szukaną wartość jako argumenty.
function recursiveSearch(array $array, $value): ?int { foreach ($array as $key => $item) { if ($item === $value) { return $key; // Znaleziono wartość, zwracamy klucz } if (is_array($item)) { $result = recursiveSearch($item, $value); // Rekurencyjne wywołanie dla podtablicy if ($result !== null) { return $key . '.' . $result; // Zwracamy ścieżkę do wartości } } } return null; // Wartość nie znaleziona }
- Przykładowa tablica zagnieżdżona: Utworzymy tablicę reprezentującą strukturę drzewiastą (np. katalogi i pliki).
$tree = [ 'katalog1' => [ 'plik1.txt' => 'zawartość pliku 1', 'katalog2' => ['plik2.txt' => 'zawartość pliku 2'] ], 'plik3.txt' => 'zawartość pliku 3' ];
- Wyszukiwanie wartości: Użyjemy funkcji `recursiveSearch` do znalezienia wartości “zawartość pliku 2”.
$result = recursiveSearch($tree, 'zawartość pliku 2'); if ($result !== null) { echo "Wartość znaleziona pod kluczem: " . $result; } else { echo "Wartość nie znaleziona."; }
Ten przykład pokazuje, jak wykorzystać rekurencję do efektywnego przeszukiwania tablic zagnieżdżonych. Pamiętaj, że rekurencja może być mniej wydajna niż iteracja w przypadku bardzo dużych i głębokich struktur danych.