Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Filtrowanie wyników z tablicy asocjacyjnej
Forum PHP.pl > Forum > Przedszkole
miniol
W jaki sposób mogę wybrać z tabeli asocjacyjnej tylko interesujące mnie rekordy?

Dla przykładu podam taką tabelę:

Imię|Nazwisko
-----------------
Adam|Nowak
Piotr|Kowalski
Adam|Iksiński
Jan|Ciekawski


Chciałbym teraz wyświetlić rekordy w których imię to "Adam".

W mysql'u dałbym takie zapytanie
  1. SELECT * FROM `osoby` WHERE `imię` = 'Adam';


Ale nie wiem jak można to zrobić na tablicy.
piotrooo89
A w jaki sposób konstruujesz tablice? Może array_search?
miniol
Tabelę dodaję za pomocą pętli for. A dane są pobierane z pliku .dbf.

Moja tabela ma taką składnię:
  1. for ($i = 1; $i <= $ile_rekordow; $i++) {
  2. $tabela['imie'][$rekord] = $dane['IMIE'];
  3. $tabela['nazwisko'][$rekord] = $linia['NAZWISKO'];
  4. $rekord++;
  5. }
piotrooo89
Chyba powinno być:

  1. $tabela[$rekord]['imie'] = $dane['IMIE'];
  2. $tabela[$rekord]['nazwisko'] = $linia['NAZWISKO'];


I chyba będziesz musiał zastosować array_walk_recursive i przekazać do callback'a swoją wartość, którą szukasz.
miniol
Cytat(piotrooo89 @ 20.10.2011, 11:30:13 ) *
Chyba powinno być:

  1. $tabela[$rekord]['imie'] = $dane['IMIE'];
  2. $tabela[$rekord]['nazwisko'] = $linia['NAZWISKO'];


I chyba będziesz musiał zastosować array_walk_recursive i przekazać do callback'a swoją wartość, którą szukasz.

Poczytałem trochę o tym i... niewiele mi to powiedziało smile.gif W każdym razie rozwiązałem to swoim łopatologicznym sposobem za pomocą pętli i warunków. I na razie mi to chyba wystarczy. Bo docelowo nie chodziło mi o imiona, tylko o magazyny, ale dla łatwiejszego sprecyzowania pisałem o imionach.
Mam 40 magazynów i każdy z nich będzie sprawdzany, czy znajduje się w tablicy. Może i nie jest to zbyt optymalne, ale mi to wystarczy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.