Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sprawdzanie czy ciąg to liczba całkowita dodatnia
Forum PHP.pl > Forum > Przedszkole
miedzna
Jest taka funkcja, tylko wyleciało mi z głowy jaka?
kefirek
is_numeric

  1. <?php
  2. if (is_numeric('2378743')) {
  3. echo 'ok';
  4. } else {
  5. echo 'błąd';
  6. }
  7. ?>
JoShiMa
kefirek, a jak będzie ujemna ('-2378743') to też chyba wyświetli ok co? nie lepiej rzutować na int?


  1. <?php
  2. if( ((int)$string) >0 ) echo 'ok';
  3. else echo 'blad';
  4. ?>
wookieb
To jak bedzie liczba to mozna jeszcze sprawdzic czy jest wieksza od zera. Ot cała filozofia.
phpion
JoShiMa:
a jak będzie to '123dupajaś'? smile.gif
Ja bym machnął wyrażenie regularne i po sprawie:
  1. <?php
  2. $czy_liczba = (bool)preg_match('#^[0-9]+$#', '123dupajaś');
  3. var_dump($czy_liczba);
  4. ?>


i jeszcze jedno rozwiązanie (prawdopodobnie najszybsze):
  1. <?php
  2. $string = '123dupajaś';
  3.  
  4. $czy_liczba = $string === (string)abs($string);
  5. var_dump($czy_liczba);
  6. ?>
JoShiMa
Cytat(phpion @ 26.02.2009, 12:51:39 ) *
JoShiMa:
a jak będzie to '123dupajaś'? smile.gif


Nie sprawdziłam. Moja kulpa.
wookieb
Cytat
Ja bym machnął wyrażenie regularne i po sprawie:

Do zerwania jednego kłosa zboża na ręke jedziesz z kombajnem?
Wyraźnie w temacie jest napisane, że chce sprawdzić czy ciąg jest liczba całkowitą dodatnią
Wiec rozwiazanie kefirka plus dodanie do niego sprawdzenia czy $liczba>0 jest wystarczającym.

//EDIT Tfu błąd. Pierwsza funkcja sprawdza ale w sposób nadzwyczaj nadmiarowy.
phpion
Cytat(wookieb @ 26.02.2009, 13:04:06 ) *
Pierwsze rozwiązanie które podałeś nie jest ok bo nie SPRAWDZA tylko SZUKA liczby w ciągu.

Kwestia przyjętego nazewnictwa. Poza tym podałem drugie rozwiązanie, które wydaje się szybkie i poprawne.
mike
Cytat(phpion @ 26.02.2009, 11:06:05 ) *
Kwestia przyjętego nazewnictwa.
Nie. To jest kwestia algorytmu, który jest wykonywany. Testowanie wyrażeniem regularnym jest dużo bardziej obciążające. A to już jest różnica większa niż "kwestia nazwy".
JoShiMa
  1. <?php
  2. if (is_numeric('2378743')) {
  3. echo 'ok';
  4. } else {
  5. echo 'błąd';
  6. }
  7. ?>


Niestety to rozwiązanie przepuszcza również liczby wymierne (z kropką) sad.gif

Więc chyba lepiej to wyrażenie regularne...
mls
  1. <?php
  2. function is_absnum ($number)
  3. {
  4.    return (string)(int)$number === (string)$number && abs($number) === (int)$number ? true : false;
  5. }
  6. ?>
mike
<offtopic>
W takich sytuacjach widać jak bardzo PHP obsysa jako język programowania.
<offtopic/>
mls
@mike, może dlatego, że nie był tworzony jako język programowania... winksmiley.jpg
mike
Cytat(mls @ 26.02.2009, 15:41:59 ) *
@mike, może dlatego, że nie był tworzony jako język programowania... winksmiley.jpg
Po części masz rację. Doczasu PHP/FI 2.0 były to zabawki i toolsy. Później Suraski i Gutmans zrobili z tego język programowania, przepisując od nowa.
Mieli czystą kartkę i dużo możliwości. Spieprzyli sprawę.
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.