Witam,
Mam problem z poprawnym odczytem tablicy asocjacyjnej. Muszę zrobić prostą wyszukiwarkę w Zendzie, ale problem mam z samym PHP.
Zacznę od struktury bazy danych. Są tam tablice Klienci oraz Opisy. Jedna z funkcji wyszukuje daną frazę w tablicy Opisy i pobiera ID klienta. W dalszej kolejności funkcja pobiera dane klientów o wyszukanym ID z tabeli Klienci. Dzieje się to w pętli tak, że każde ID jest brane w kolejnej pętli. Efektem takiego jednego powtórzenia jest jednowymiarowa tablica asocjacyjna (np. array(‘id’ => ‘adfef14515’, ‘name’ => ‘Jaś Fasola’, itd.)). Po każdym powtórzeniu łącze to w jedną tablicę za pomocą funkcji array_merge_recursive($koncowa_tablica, $aktualny_klient).
Nie potrafię poprawnie odczytać danych poszczególnych klientów z $koncowej_tablicy. Robię to w następującej pętli:
foreach($koncowa_tablica as $current) {
$i = 0;
$dane = null;
foreach($koncowa_tablica as $key => $value) {
$dane[] = $value[$i];
}
// tutaj następuje odpowiednie wydrukowanie danych
$i++;
}
Dane muszą być wydrukowane w różnej kolejności, czasem muszą się powtórzyć i dlatego wrzucam to do tymczasowej tablicy $dane.
Co gorsza, powyższa pętla nie działa idealnie.
Być może kiepsko działa też łączenie wszystkiego do jednej tablicy. Rozważałem rozwiązanie problemu poprzez zastosowanie pętli do komendy SQL, np. 'SELECT * FROM Klienci WHERE id=‘adga45245’ OR id=‘argqerg945145’ OR… ’ i w pętli doklejać kolejne ‘id’. Na razie wydaje mi się, że byłoby to najlepsze rozwiązanie (jeszcze go nie testowałem) i chyba rozwiązywałoby problem odczytu tablicy z danymi wszystkich wyszukanych klientów.
Odczyt typu $current[$i][‘name’] nie działa (nie wiem, czy powinien działać).
Jeśli ktoś wie, jak odbierać dane za pomocą normalnej tablicy, bez kombinowania, byłbym wdzięczny za pomoc.
– Dodane Cz, 28 maja 2009, 16:25 –
Niestety pomysł z obróbką komendy SQL również nie może być użyty. Dane klientów są zapisane w dwóch tablicach więc nie można tego zrobić w jednym poleceniu.
Musi być pętla.