Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]jak wyciagnac z tablicy liczby mniejsze od 1?, is_numeric akceptuje tylko ostatnia
c4ash
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 9
Dołączył: 14.01.2010

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


Witam!

Mam liste na stronie na zasadzie:
Data Skad Kwota
data niestety w formacie 30 czerwiec 2014

Chcialem wyciagnac wszystkie liczby z kolumny kwota, a nastepnie je zsumowac. Jednak gdy w petli robie warunek is_numeric() to wyswietla mi owszem, dzien i rok, ale kwote tylko bierze ostatnia! (Dodam, ze wpisow jest kilka, a te kwoty co mnie interesuja sa dosc male - rzedu tysiecznych czesci). Czy przypadkiem is_numeric nie powinien wyrzucic wszystkich liczb?

Latwiej bedzie jak bedzie kod:
te dwa pierwsze str_replace sprowadzaja caly string do jednakowego formatu (czyli rozdzielenie kolejnych przez spacje).
  1. $pole = str_replace("\n", " ", $pole);
  2. $pole = str_replace(" "," ",$pole);
  3. $rozwal = explode(" ", $pole);
  4. for ($m = 0; $m < count($rozwal);$m++) {
  5.  
  6. if(is_numeric($rozwal[$m])) {
  7. echo $rozwal[$m].'<br >';
  8. }
  9. }

Aby nie bylo, echo daje wynik:
Kod
30
2014
30
2014
30
2014
0.00000020

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


nna pewno da się preg_match,

Podaj kawałek wycinka danych
Go to the top of the page
+Quote Post
c4ash
post
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 9
Dołączył: 14.01.2010

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


Cytat(Pyton_000 @ 1.07.2014, 15:04:17 ) *
Podaj kawałek wycinka danych

Prosze:
Kod
30 Jun 2014 3:15:05 PM UTC    fllips    0.00000050
30 Jun 2014 3:10:56 PM UTC    romain    0.00000060


Cytat(Damonsson @ 1.07.2014, 15:06:00 ) *
is_numeric działa ok. Błąd robisz pewnie gdzieś podczas tych swoich str_replace i explode.

A nie mozesz byc troche bardziej dokladny? Calosc kodu jest na stronie (no moze z wyjatkiem formularza, ale to sie nie liczy..).
Usuwajac linijki ze str_replace wynik jest o tyle ciekawszy, ze zostalo tylko 30 i 2014, juz bez tych ulamkow na koncu... No chyba, ze to wina explode?

Ten post edytował c4ash 1.07.2014, 14:41:59
Go to the top of the page
+Quote Post
Damonsson
post
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Cytat(c4ash @ 1.07.2014, 15:34:18 ) *
A nie mozesz byc troche bardziej dokladny?

A co ja wróżka, żebym wiedział co podajesz na wejściu? (IMG:style_emoticons/default/withstupidsmiley.gif)


Takie wyrażenie powinno Ci zadziałać:
Kod
([0-9.]+)$
bez żadnego kombinowania z replace i explode.

  1. preg_match('/([0-9.]+)$/', $pole, $matches);
  2. print_r($matches);


Ten post edytował Damonsson 1.07.2014, 15:17:08
Go to the top of the page
+Quote Post
by_ikar
post
Post #5





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Cytat(Damonsson @ 1.07.2014, 16:01:10 ) *
A co ja wróżka, żebym wiedział co podajesz na wejściu? (IMG:style_emoticons/default/withstupidsmiley.gif)


Takie wyrażenie powinno Ci zadziałać:
Kod
([0-9.]+)$
bez żadnego kombinowania z replace i explode.

  1. preg_match('/([0-9.]+)$/', $pole, $matches);
  2. print_r($matches);


No nie do końca, bo będzie to działać tylko dla ostatniego wystąpienia: http://www.regexr.com/39363 osobiście proponowałbym coś takiego: http://www.regexr.com/39369 do tego zwykłe asort:

  1. <?php
  2.  
  3. $c = '30 Jun 2014 3:15:05 PM UTC fllips 0.00000050
  4. 30 Jun 2014 3:10:56 PM UTC romain 0.00000070
  5. 30 Jun 2014 3:10:56 PM UTC romain 0.00000080
  6. 30 Jun 2014 3:10:56 PM UTC romain 0.00000090
  7. 30 Jun 2014 3:10:56 PM UTC romain 0.00000040
  8. 30 Jun 2014 3:10:56 PM UTC romain 0.00000020';
  9.  
  10. preg_match_all('/([\d]+\.[\d]+)/', $c, $matches);
  11.  
  12. asort($matches[0]);
  13.  
  14. var_dump($matches[0]);
Go to the top of the page
+Quote Post
c4ash
post
Post #6





Grupa: Zarejestrowani
Postów: 73
Pomógł: 9
Dołączył: 14.01.2010

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


by_ikar - to jest to! Dziekuje i Tobie i wszystkim pozostałym za pomoc.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 10:55