Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Uproszczenie IFa
AdamT
post 8.09.2017, 08:09:18
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 22.01.2004
Skąd: LDZ

Ostrzeżenie: (0%)
-----


Witajcie,

dawno mnie nie było.. i dawno nic nie pisałem tongue.gif Prośba o podpowiedź jak można uprościć taką instrukcję:

  1. echo "UID: ";
  2.  
  3. if (strpos($row[0], $uid) !== FALSE){
  4. echo " wystepuje w kluczu 1, ";
  5. if (strpos($row[1], $uid) !== FALSE){
  6. echo " wystepuje w kluczu 2, ";
  7. if (strpos($row[2], $uid) !== FALSE){
  8. echo " wystepuje w kluczu 3, ";
  9. if (strpos($row[3], $uid) !== FALSE){
  10. echo " wystepuje w kluczu 4, ";
  11. if (strpos($row[4], $uid) !== FALSE){
  12. echo " wystepuje w kluczu 5, ";
  13. if (strpos($row[5], $uid) !== FALSE){
  14. echo " wystepuje w kluczu 6, ";
  15. if (strpos($row[6], $uid) !== FALSE){
  16. echo " wystepuje w kluczu 7, ";
  17. if (strpos($row[7], $uid) !== FALSE){
  18. echo " wystepuje w kluczu 8, ";
  19. if (strpos($row[8], $uid) !== FALSE){
  20. echo " wystepuje w kluczu 9, ";
  21. if (strpos($row[9], $uid) !== FALSE){
  22. echo "wystepuje w kluczu 10, ";
  23. } else { echo " nie wystepuje w kluczu 10 !"; }
  24. } else { echo " nie wystepuje w kluczu 9, "; }
  25. } else { echo " nie wystepuje w kluczu 8, "; }
  26. } else { echo " nie wystepuje w kluczu 7, "; }
  27. } else { echo " nie wystepuje w kluczu 6, "; }
  28. } else { echo " nie wystepuje w kluczu 5, "; }
  29. } else { echo " nie wystepuje w kluczu 4, "; }
  30. } else { echo " nie wystepuje w kluczu 3, "; }
  31. } else { echo " nie wystepuje w kluczu 2, "; }
  32. } else { echo " nie wystepuje w kluczu 1, "; }


--------------------
Hardware : <span style="font-weight: bold;">OrangePi+ 2E | 2GB RAM | HDD: 1TB </span>
Software : <span style="font-weight: bold;">Debian GNU/Linux 8 (jessie) 3.4.113-sun8i </span>
Go to the top of the page
+Quote Post
trueblue
post 8.09.2017, 08:22:38
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. $uid = 1;
  2. $row = array(1, 2, 1, 3, 4, 1, 10, 8, 1);
  3. $arr = array_fill(0,count($row), $uid);
  4.  
  5. foreach( array_intersect( $row, $arr) as $index=>$value){
  6. echo "wystepuje w kluczu ".($index+1);
  7. }
  8. foreach( array_diff_assoc( $arr, $row) as $index=>$value){
  9. echo "nie wystepuje w kluczu ".($index+1);
  10. }


Ten post edytował trueblue 8.09.2017, 08:41:44


--------------------
Go to the top of the page
+Quote Post
by_ikar
post 8.09.2017, 09:22:30
Post #3





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Przecież tutaj wystarczy jeden foreach z jednym ifem w środku.
Go to the top of the page
+Quote Post
AdamT
post 8.09.2017, 09:53:27
Post #4





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 22.01.2004
Skąd: LDZ

Ostrzeżenie: (0%)
-----


Chyba coś nie do końca mi te foreach działa :/

To wprowadzam do formularza:
key: {data1: [u'1234'], data2: [u'1234'], data3: [u'1234'], data4: [u'2345', u'3456', u'4567', u'9632', u'4568', u'9876', u'7892', u'8523'],
data5: [u'1234']}
uid: 1234

Kod:
  1. <?php
  2. // Pobieramy dane z formularza
  3. $key = $_POST['key'];
  4. $uid = $_POST['uid'];
  5.  
  6. // Tworzymy tabelę kluczy, za pomocą wzorca
  7. preg_match_all("/\[u\'+.+\'\]/U", $key, $result);
  8.  
  9. // Wyświetlamy wyniki
  10. $display = print_r($result, TRUE);;
  11. $display = str_replace(" ", "&nbsp;", $display);
  12. $display = nl2br($display);
  13. echo($display);
  14.  
  15. // Dotąd jest OK
  16. // Teraz musimy przeszukać powstała tabelę pod kątem występowania ID
  17. foreach ($result as $row){
  18.  
  19. echo $uid;
  20.  
  21. $arr = array_fill(0,count($row), $uid);
  22.  
  23. foreach( array_intersect( $row, $arr) as $index=>$value){
  24. echo " wystepuje w kluczu ".($index+1);
  25. }
  26. foreach( array_diff_assoc( $arr, $row) as $index=>$value){
  27. echo " nie wystepuje w kluczu ".($index+1)."!";
  28. }
  29. }
  30. ?>


Zwraca: 1234 nie wystepuje w kluczu 1! nie wystepuje w kluczu 2! nie wystepuje w kluczu 3! nie wystepuje w kluczu 4! nie wystepuje w kluczu 5! sad.gif

Dalej będzie jeszcze instrukcja warunkowa, że jak występuje uid we wszystkich kluczach to OK... ale to już chyba dam radętongue.gif


--------------------
Hardware : <span style="font-weight: bold;">OrangePi+ 2E | 2GB RAM | HDD: 1TB </span>
Software : <span style="font-weight: bold;">Debian GNU/Linux 8 (jessie) 3.4.113-sun8i </span>
Go to the top of the page
+Quote Post
trueblue
post 8.09.2017, 09:58:17
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A jak wygląda tablica $row?


--------------------
Go to the top of the page
+Quote Post
AdamT
post 8.09.2017, 10:01:09
Post #6





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 22.01.2004
Skąd: LDZ

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 8.09.2017, 10:58:17 ) *
A jak wygląda tablica $row?


Tak zwraca preg_match_all:

Array
(
[0] => Array
(
[0] => [u'1234']
[1] => [u'1234', u'4567']
[2] => [u'1234']
[3] => [u'2345', u'3456', u'4567', u'9632', u'4568', u'9876', u'7892', u'8523']
[4] => [u'1234']
)

)


--------------------
Hardware : <span style="font-weight: bold;">OrangePi+ 2E | 2GB RAM | HDD: 1TB </span>
Software : <span style="font-weight: bold;">Debian GNU/Linux 8 (jessie) 3.4.113-sun8i </span>
Go to the top of the page
+Quote Post
trueblue
post 8.09.2017, 10:38:01
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Rozwiązanie zaproponowane przez by_ikar będzie tu odpowiedniejsze, choćby ze względu na format wartości.

  1. $uid = "9632";
  2. $row = array("u'2345'", "u'3456'", "u'4567'", "u'9632'", "u'4568'", "u'9876'", "u'7892'", "u'8523'");
  3.  
  4. foreach( $row as $index => $value){
  5. if( strpos( $value, $uid ) !== false){
  6. echo "wystepuje na pozycji " . ( $index + 1 ) . "<br/>";
  7. }
  8. else{
  9. echo "nie wystepuje na pozycji " . ( $index + 1 ) . "<br/>";
  10. }
  11. }


--------------------
Go to the top of the page
+Quote Post
AdamT
post 8.09.2017, 10:54:15
Post #8





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 22.01.2004
Skąd: LDZ

Ostrzeżenie: (0%)
-----


Działa. Pięknie dziękuję smile.gif


--------------------
Hardware : <span style="font-weight: bold;">OrangePi+ 2E | 2GB RAM | HDD: 1TB </span>
Software : <span style="font-weight: bold;">Debian GNU/Linux 8 (jessie) 3.4.113-sun8i </span>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 06:28