Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak sprawdzić, czy cala tablica ma zadana wartość?
sebap123
post 1.07.2011, 12:34:28
Post #1





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


Zastanawiam się i nie mogę nic wymyślić, w jaki sposób sprawdzić, czy cała tablica ma zadaną wartość. Tablica jest definiowana "stopniowo" i ma elementy od 0 do 8. Po prostu jest to tabela, która sprawdza parę warunków i jeśli jest on sprzeczny to przypisuje do elementu wartość true, a jeśli nie to false. Chciałem zrobic na samym końcu coś takiego:

  1. if($tablica==false)
  2. print 'false';
  3. else
  4. print 'true';


(w rzeczywistości wykonywane są inne rzeczy w zależności od warunku, ale to akurat nie ma większego znaczenia, bo zasada działania jest ta sama). Pomysł ten wziąłem jako analogię przypisania do całej tablicy jednej wartości:

  1. $tablica[]=false;
która to działa. Dlatego właśnie nie wiem już co jest źle napisane. Może ktoś coś podpowiedzieć?
Go to the top of the page
+Quote Post
kefirek
post 1.07.2011, 12:50:11
Post #2





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


  1. $tab[] = true;
  2. $tab[] = true;
  3. $tab[] = true;
  4. $tab[] = true;
  5.  
  6. function array_is_value($arr, $wartosc){
  7. if(is_array($arr)){
  8. foreach ($arr as $val){
  9. if ($val!== $wartosc){
  10. return false;
  11. break;
  12. } else {
  13. return true;
  14. }
  15. }
  16. } else {
  17. return false;
  18. }
  19. }
  20.  
  21.  
  22. if(array_is_value($tab, false)){
  23. echo 'false';
  24. } else {
  25. echo 'true';
  26. }


Ten post edytował kefirek 1.07.2011, 12:53:17
Go to the top of the page
+Quote Post
Sephirus
post 1.07.2011, 12:59:11
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


@ up to co napisałeś w zasadzie można sprowadzić do tego:

  1. $wartosc_calej_tablicy = in_array(true,$tablica);


Ale ogólnie to nie wiem czy autorowi nie chodziło o coś innego.

@autor czy chodziło Ci o to co napisaliśmy czy może o to że chcesz sprawdzić czy wszystkie rekordy tabeli są identyczne i mają wartość powiedzmy true?

Bo jeśli tak to trzeba wyszukiwać na odwrót to znaczy - jeżeli wszystkie muszą być true to sprawdzasz za pomocą funkcji in_array() czy nie ma tam czasem choćby jednego false - jeśli jest to oznacza, że wartość całej tablicy to nie true.

Pozatym przypisanie typu $tablica[] = true; nie oznacza że $tablica = true; tylko jest to po prostu dodanie do tablicy kolejnej wartości na zasadzie:

  1. $tab = array();
  2. $tab[] = 'a';
  3. $tab[] = 'b';
  4. $tab[] = 'c';


Taki kod da wynik typu tablicy z rekordami ('a','b','c')...

HTH wink.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
sebap123
post 1.07.2011, 13:21:17
Post #4





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


Chodziło mi właśnie o sprawdzenie, czy wszystkie elementy są takie same i maja zadaną wartość. A co do tego przypisania, to też mi się wydaje, że to jest przypisanie takie jak pokazałeś, ale nie wiem jakim cudem to działa tak, że niezależnie ile el. ma tablica to i tak wszystkie są początkowo zdefiniowane jako true.

Teraz wszystko działa, dzięki za pomoc.
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: 4.05.2025 - 13:15