Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sprawdzanie czy każdy element tablicy to liczba
Forum PHP.pl > Forum > Przedszkole
arzach
Witam mam taki kod
  1. $owoce1 = array (0=>'b', 1=>2, 2=>3, 3=>4);
  2. $owoce2 = array (0=>'b', 1=>'b', 2=>'b', 3=>4);
  3.  
  4. $error = '';
  5. function test_liczba($element2)
  6. {
  7. if(!is_numeric($element2)) $error .= 'Wszystkie elementy tablicy musza być liczba</br>';
  8. }
  9.  
  10. array_walk ($owoce1, 'test_liczba');
  11. array_walk ($owoce2, 'test_liczba');
  12.  
  13.  
  14. if($error !== '')
  15. {
  16. echo $error;
  17. }

I dla czego to nie działa?
Zmienna $error jest pusta.
czachor
Poczytaj o zasięgu zmiennych: http://www.php.net/manual/pl/language.variables.scope.php
cros
wystarczy na koncu funkcji dac return $error;
arzach
Zrobiłem tak ale to nie do końca jest to co chciałem osiągnąć
  1. $owoce1 = array (0=>'b', 1=>2, 2=>3, 3=>4);
  2. $owoce2 = array (0=>'b', 1=>'b', 2=>'b', 3=>4);
  3.  
  4. $error = '';
  5. function test_liczba($element2)
  6. {
  7. global $error;
  8. if(!is_numeric($element2)) $error .= 'Wszystkie elementy tablicy musza być liczba</br>';
  9. return $error;
  10. }
  11.  
  12. array_walk ($owoce1, 'test_liczba');
  13. array_walk ($owoce2, 'test_liczba');
  14.  
  15.  
  16. if($error !== '')
  17. {
  18. echo $error;
  19. }

Chciałbym osiągnąć coś takiego
  1. if(array_walk ($owoce1, 'test_liczba'))
  2. {
  3. echo 'Wszystkie elementy tablicy to liczba';
  4. }
  5. else
  6. {
  7. echo 'Wszystkie elementy tablicy to nie liczba';
  8. }

Wiem ze to nie zadziała, ale czy można to jakoś zrobić za pomocą jakieś funkcji?
cros
Zdaje sie ze musisz takze odwolac sie do klucza w funkcji.
$element2[0] itd...
arzach
Tylko ja bym chciał sprawdzić czy każdy element to liczba.

To, co teraz zrobiłem wyświetla mi

Wszystkie elementy tablicy musza być liczba
Wszystkie elementy tablicy musza być liczba
Wszystkie elementy tablicy musza być liczba
Wszystkie elementy tablicy musza być liczba

Czyli nie do końca tak jak chciałem. Bo to sprawdza każdy element i do każdego wyświetla komunikat a ja potrzebuje jeden komunikat do jednej tablicy a nie tyle komunikatów ile jest błędnych wartości
Fifi209
O tak musisz zrobić:
  1. <?php
  2.  
  3. $true = array(1,2,3,4,5,6);
  4. $false = array('1', 2, 3);
  5.  
  6. function test($arr) {
  7. foreach ($arr as $val) {
  8. if (!is_int($val)) {
  9. return false;
  10. break;
  11. }
  12. }
  13. return true;
  14. }
  15.  
  16. echo '<pre>';
  17. var_dump(test($true));
  18. echo '</pre><pre>';
  19. var_dump(test($false));
  20.  
  21. ?>
arzach
Dziękuje bardzo o to mi chodziło.
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.