![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 264 Pomógł: 54 Dołączył: 31.08.2007 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Witam. Próbuję zrobić rozbudowany warunek z danych zawartych w tablicy (wiem że przy pomocy eval() takie cuda ale się zaplątałem za bardzo).
Do rzeczy, posiadam taką oto tablicę Kod Array ( [0] => Array ( [0] => name [1] => == [2] => Akurat ) [1] => Array ( [0] => image [1] => == [2] => at.gif ) ) I potrzebuję zrobić taki oto warunek (zgodnie z tablicą)
W zależności od rozciągłości tablicy warunek też by się powiększał. Jak widać pierwszy wiersz z tablicy to nazwa pola z obiektu, drugi operator, a trzeci wartość pola jaką chcę sprawdzić, a pomiędzy kolejnymi częściami mam AND/&& (jak kto woli). Zaznaczę że nie mam problemu tego osiągnąć gdyby to była tablica jednowymiarowa i do generacji byłby tylko jednoczęściowy warunek. Pozdrawiam i liczę na jakąkolwiek pomoc z waszej strony. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Będziesz potrzebował dynamicznie odwoływać się do różnych właściwości obiektu - tutaj potrzebne Ci będzie ReflectionProperty::getValue().
2. Będziesz potrzebował znać ostateczny wynik warunku, tak więc utwórz sobie zmienną $result z wartością początkową true, oznaczającą poprawnie spełnione warunki. 3. Następnie w pętli, pobierz sobie do tymczasowej zmiennej wartość z obiektu, którą będziesz porównywać (patrz pkt. 1) oraz wrzuć blok switch, który będzie decydować o tym jaką operację porównania wykonać (==, <, >, <=, >=). 4. W blokach case wewnątrz switcha wykonaj porównanie dla danego operatora. Wynik porównania przypisz do zmiennej $result. 5. W pętli, już poza switchem sprawdź czy zmienna $result nie ma przypadkiem wartości false. Jeśli tak, nie ma potrzeby dalszego sprawdzania, ponieważ cały warunek będzie już nieprawdziwy. Przerwij wykonywanie pętli - break. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 264 Pomógł: 54 Dołączył: 31.08.2007 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, zająłem się rozumowaniem nie w tę stronę. W pętli wrzuciłem jednak coś na ten styl:
Pozdrawiam. Ten post edytował Greg0 12.07.2012, 20:29:01 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 7.07.2025 - 19:34 |