Jump to content

Welcome to Smart Home Forum by FIBARO

Dear Guest,

 

as you can notice parts of Smart Home Forum by FIBARO is not available for you. You have to register in order to view all content and post in our community. Don't worry! Registration is a simple free process that requires minimal information for you to sign up. Become a part of of Smart Home Forum by FIBARO by creating an account.

 

As a member you can:

  •     Start new topics and reply to others
  •     Follow topics and users to get email updates
  •     Get your own profile page and make new friends
  •     Send personal messages
  •     ... and learn a lot about our system!

 

Regards,

Smart Home Forum by FIBARO Team


  • 0

Przeszukiwanie tablicy i wykonanie na niej operacji


kcx

Question

Witam!

 

Mam taki kod:

Please login or register to see this code.

Idea jest taka, żeby przy "wędrówce" przez poszczególne elementy tablicy (tablica), wykonywał określoną funkcję przy znalezieniu jednej z wartości zawartych w tablicy test_tbl.

Co napisałem źle? Może błąd tkwi w samej funkcji in_array() ?

 

 

 

 

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0
Guest vandi

Możesz też zdefiniować funkcję.

 Nazwę ją "szukaj":

Please login or register to see this code.

Funkcje są o tyle fajne, że definiujesz je raz, a potem wywołujesz ile chcesz, zmieniając tylko tablice do przeszukania, czyli dane wejściowe funkcji ->  argumenty.

Potem tylko wystarczy taką funkcję (tak samo jak zmienną) wywołać.

A robi się to bardzo prosto:

Please login or register to see this code.

Efekt działania jest ten sam, a kod programu staje się czytelniejszy.

Zauważ, że w momencie wywoływania funkcji "szukaj" między nawiasami wstawiasz tablice( argumenty funkcji), które chcesz aby funkcja przeszukała.

Są one wstawiane do funkcji i w momencie wstawiania zmieniają nazwy z "tablica" na "tabelaDoWyszukania" i "test_tbl" na 'tabelaZ_Szukanymi".

 

W tym samym kodzie możesz zdefiniować inne zmienne tablicowe:

Please login or register to see this code.

A potem już tylko funkcję "szukaj" wywołać:

Please login or register to see this code.

P.s.

Funkcje są świetnym narzędziem. Warto ich używać.

I aż dziwne, że do tej pory nikt nie utworzył na polskim forum, tematu o nich .

 

Edited by vandi
Link to comment
Share on other sites

  • 0
  • Inquirer
  • Witam!

     

    Dlaczego w funkcji nie dziala "else" ?

     

    Please login or register to see this code.

    tzn. działa, ale nie w taki sposób jakby się mogło wydawać :) (-->>>  dodane tylko w tym poście, żeby wskazać miejsce). Zamiast tylu wynikow ile elementow ma tablica z danymi wejsciowymi dostaję iloczyn ilosci szukanych elementów i wszystkich elementow z tablicy z danymi wejsciowymi, czyli jeśli szukam 3 wartości w tablicy z 8 elementami, to wynikiem będzie wydruk 24 linijek. 

     

    Chciałbym osiągnąc coś takiego:

    1. Tablica zawierająca lampy do wlączenia "lampy_do_wlaczenia"

    2. Tablica z wszystkimi lampami w pomieszczeniu "wszystkie_lampy".

    3. Funkcja: Sprawdź wszystkie lampy w tablicy "wszystkie_lampy" i włącz te co mają być włączone (na podstawie listy z tablicy "lampy_do_wlaczenia") a wyłącz te, co mają być wyłączone.

     

    Oczywiście mógłbym po prostu zrobić 2 pętle:

    1. Przejść przez tablicę "wszystkie_lampy" i je pogasic

    2. Przejść przez tablicę "lampy do włączenia" i je zapalić.

     

    Wolałbym jednak w celach edukacyjnych :) i zmniejszających ilość linijek kodu zrobić to w jednym przebiegu, czyli przejść przez tablicę wszystkie_lampy, sprawdzając czy ma być włączona czy nie. Coś jak w PHP:

    Please login or register to see this code.

     

    PS:

    Oj przydałby się panel "funkcje", żeby można było umieszczać wszystkie funkcje w jednym miejscu i byly dostepne dla innych skryptow

    Link to comment
    Share on other sites

    • 0
  • Inquirer
  • 6 hours ago, vandi said:

    P.s.

    Funkcje są świetnym narzędziem. Warto ich używać.

    I aż dziwne, że do tej pory nikt nie utworzył na polskim forum, tematu o nich .

     

    Zwlaszcza, że LUA jest dość uboga w funkcje, a fibaro oferuje tylko kilka metod do fibaro:. Gdyby tak mieć panel do funkcji taki jak do zmiennych, można by było tworzyć funkcje uniwersalne, które wykorzystywane byłyby w dowolnym skrypcie, nie wspominając już o publikowaniu. Domyślam się, że w założeniu twórców FIBARO taką rolę miały pełnić SCENY, ale ciężko przekazać tutaj jakieś argumenty (chyba że przez panel zmiennych, ale to już zbytnio komplikuje funkcjonowanie :) ) 

    Link to comment
    Share on other sites

    Join the conversation

    You can post now and register later. If you have an account, sign in now to post with your account.

    Guest
    Answer this question...

    ×   Pasted as rich text.   Paste as plain text instead

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

    ×
    ×
    • Create New...