Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak sprawdzić, czy cala tablica ma zadana wartość?
Forum PHP.pl > Forum > Przedszkole
sebap123
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ć?
kefirek
  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. }
Sephirus
@ 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
sebap123
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.
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.