Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Sprawdzanie czy ciąg to liczba całkowita dodatnia
miedzna
post 25.02.2009, 19:47:43
Post #1





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Jest taka funkcja, tylko wyleciało mi z głowy jaka?
Go to the top of the page
+Quote Post
kefirek
post 25.02.2009, 19:56:07
Post #2





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

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


is_numeric

  1. <?php
  2. if (is_numeric('2378743')) {
  3. echo 'ok';
  4. } else {
  5. echo 'błąd';
  6. }
  7. ?>


Ten post edytował kefirek 25.02.2009, 20:02:25
Go to the top of the page
+Quote Post
JoShiMa
post 26.02.2009, 10:47:52
Post #3





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


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. ?>


Ten post edytował JoShiMa 26.02.2009, 10:49:07


--------------------
Go to the top of the page
+Quote Post
wookieb
post 26.02.2009, 10:49:27
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




To jak bedzie liczba to mozna jeszcze sprawdzic czy jest wieksza od zera. Ot cała filozofia.


--------------------
Go to the top of the page
+Quote Post
phpion
post 26.02.2009, 10:51:39
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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. ?>


Ten post edytował phpion 26.02.2009, 11:01:50
Go to the top of the page
+Quote Post
JoShiMa
post 26.02.2009, 10:58:49
Post #6





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Cytat(phpion @ 26.02.2009, 12:51:39 ) *
JoShiMa:
a jak będzie to '123dupajaś'? smile.gif


Nie sprawdziłam. Moja kulpa.


--------------------
Go to the top of the page
+Quote Post
wookieb
post 26.02.2009, 11:04:06
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.

Ten post edytował wookieb 26.02.2009, 11:11:16


--------------------
Go to the top of the page
+Quote Post
phpion
post 26.02.2009, 11:06:05
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post
mike
post 26.02.2009, 11:10:46
Post #9





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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".
Go to the top of the page
+Quote Post
JoShiMa
post 26.02.2009, 15:08:58
Post #10





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


  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...

Ten post edytował JoShiMa 26.02.2009, 15:10:53


--------------------
Go to the top of the page
+Quote Post
mls
post 26.02.2009, 15:25:35
Post #11





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


  1. <?php
  2. function is_absnum ($number)
  3. {
  4.    return (string)(int)$number === (string)$number && abs($number) === (int)$number ? true : false;
  5. }
  6. ?>


Ten post edytował mls 26.02.2009, 15:27:58


--------------------
Go to the top of the page
+Quote Post
mike
post 26.02.2009, 15:29:27
Post #12





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


<offtopic>
W takich sytuacjach widać jak bardzo PHP obsysa jako język programowania.
<offtopic/>
Go to the top of the page
+Quote Post
mls
post 26.02.2009, 15:41:59
Post #13





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


@mike, może dlatego, że nie był tworzony jako język programowania... winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
mike
post 26.02.2009, 15:51:56
Post #14





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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ę.
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: 27.04.2025 - 07:31