Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> echo substr_count
Zenobiusz
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 17.05.2019

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


Witam (IMG:style_emoticons/default/biggrin.gif)

Mam kod, który ma wyszkać znak "1". ECHO wyrzuca aż 8 jedynek a mi zależy aby wyszukał tylko "1" jako znak pojedyńczy czyli powinno ECHO wyrzucać "1". Jakieś wskazówki ?

<?php
echo substr_count("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15","1");
?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Skoro używasz funkcji która zlicza ilość wystąpień w ciągu to czego oczekujesz?
Użyj np https://www.php.net/manual/en/function.stristr.php
Go to the top of the page
+Quote Post
dublinka
post
Post #3





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(Zenobiusz @ 26.08.2019, 12:29:22 ) *
Witam (IMG:style_emoticons/default/biggrin.gif)

Mam kod, który ma wyszkać znak "1". ECHO wyrzuca aż 8 jedynek a mi zależy aby wyszukał tylko "1" jako znak pojedyńczy czyli powinno ECHO wyrzucać "1". Jakieś wskazówki ?

<?php
echo substr_count("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15","1");
?>


to tablica czy string?
Go to the top of the page
+Quote Post
Zenobiusz
post
Post #4





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 17.05.2019

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


Tablica
Go to the top of the page
+Quote Post
kreatiff
post
Post #5





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


Skoro to tablica (tzn. ten string 1,2,3,...,15) no to użyj https://www.php.net/manual/en/function.arra...ount-values.php
A jeśli to jednak string, to przed powyższą funkcją przekształć tego stringa na tablicę za pomocą explode() używając przecinka jako separatora.
Go to the top of the page
+Quote Post
Zenobiusz
post
Post #6





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 17.05.2019

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


stristr to raczej nie jest dobry pomysł. To nie jest to czego oczekuje.

Tu podaje przykład:

<?php
$liczba = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15";
echo stristr($liczba, '14');
?>

Ten post edytował Zenobiusz 27.08.2019, 09:58:20
Go to the top of the page
+Quote Post
viking
post
Post #7





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


No i działa prawidłowo. Sprawdziłeś że string występuje w ciągu. Co więcej oczekujesz ?
Go to the top of the page
+Quote Post
Zenobiusz
post
Post #8





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 17.05.2019

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


Z tablicy zbyt dosłownie wyciąga wszystkie cyfry a mi nie o to chodzi. Jeżeli poproszę aby z tablicy wyliczono ile jest 1 przy ciągu liczb 1,2,3,4,5,10,11 to echo pokaże że są 4 jedynki, a ma pokazać że 1 bo faktycznie jest tylko jedna jedynka jako liczba. Z funkcją ARRAY jest już inaczej i to właśnie tutaj jest rozwiązanie.

<?php
$array = array(1, 31, 11, 42, 2);
print_r(array_count_values($array));
?>

Ten post edytował Zenobiusz 27.08.2019, 12:14:42
Go to the top of the page
+Quote Post
Tomplus
post
Post #9





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Może tego oczekujesz?
  1. $liczba = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,123,14";
  2. $szukana = '14';
  3. echo strpos($liczba, $szukana); // result: 30
  4. $szukana = '1';
  5. echo strpos($liczba, $szukana); // result: 0
  6. $szukana = '123';
  7. echo strpos($liczba, $szukana); // result: 36


Go to the top of the page
+Quote Post
viking
post
Post #10





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Z pierwszego postu wynika że chcesz sprawdzić czy występuje chociaż raz. Tym sposobem to sprawdzisz. Liczbę masz bo po niej szukasz. Czy występuje sprawdza funkcja. Dlatego nie rozumiem problemu.
Go to the top of the page
+Quote Post
Zenobiusz
post
Post #11





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 17.05.2019

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


strpos pokazuje pozycje znaku w ciągu. Z Twojego ciągu jeżeli zapytam się o liczbę 14 to z mojego oczekiwania powinno się pojawić że 14 są dwie. :-)

Viking.
No własnie w tym problem że jeżeli się zapytam o np 14 jw. w ciągu to nie pokazuje że są dwie liczby 14 tylko wyliczy wszystkie czwórki i jedynki.

Ten post edytował Zenobiusz 27.08.2019, 12:39:28
Go to the top of the page
+Quote Post
viking
post
Post #12





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Definicja funkcji jest jasna: Returns all of haystack starting from and including the first occurrence of needle to the end.
Twoje pytanie: Mam kod, który ma wyszkać znak "1".
Jakie pytanie taka odpowiedź.
Go to the top of the page
+Quote Post
Tomplus
post
Post #13





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Już nie mówiąc, że nie informujesz nas czy dane wejściowe są standaryzowane, bo może lepiej pobawić się funkcją explode() i funkcjami do szukania elementów tablicy.
Go to the top of the page
+Quote Post
dublinka
post
Post #14





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(Zenobiusz @ 26.08.2019, 12:29:22 ) *
Witam (IMG:style_emoticons/default/biggrin.gif)

Mam kod, który ma wyszkać znak "1". ECHO wyrzuca aż 8 jedynek a mi zależy aby wyszukał tylko "1" jako znak pojedyńczy czyli powinno ECHO wyrzucać "1". Jakieś wskazówki ?

<?php
echo substr_count("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15","1");
?>



  1. <?php
  2. function counter($obj, $what)
  3. {
  4. return count(array_keys($obj, $what));
  5. }
  6. $get = counter(array(1,2,11,3,4,5,1,6,7,8,9,11,10,11,12,13,11111), 11);
  7.  
  8. $x = ($get > 1) ? ' razy' : ' raz';
  9. echo 'Wystepuje: ' . $get . $x;
  10. ?>


Ten post edytował dublinka 28.08.2019, 08:34:09
Go to the top of the page
+Quote Post
Zenobiusz
post
Post #15





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 17.05.2019

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


Z funkcją explode tak łatwo nie pójdzie.

Dziękuje Dublinka. :-)

Ten post edytował Zenobiusz 28.08.2019, 11:39:06
Go to the top of the page
+Quote Post
dublinka
post
Post #16





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Mozna tez troche dookola:

  1. <?php
  2.  
  3. $tab = array(1,2,11,3,4,5,1,6,7,8,9,11,10,11,12,13,11111);
  4. $input = 11;
  5.  
  6. function counter($obj, $what)
  7. {
  8. $sum = array();
  9.  
  10. foreach($obj as $key => $val)
  11. {
  12. if($val == $what)
  13. {
  14. $sum[] = $val;
  15. }
  16. }
  17.  
  18. return count($sum);
  19.  
  20. }
  21. $get = counter($tab, $input);
  22.  
  23. $x = ($get > 1) ? ' razy' : ' raz';
  24. echo 'wartość: ' . $input . ' wystepuje: ' . $get . $x;
  25.  
  26.  
  27. ?>


I wersja z explode:)


  1. <?php
  2.  
  3. $tab = array(1,2,11,3,4,5,1,6,7,8,9,11,11,10,11,12,13,11111);
  4. $input = 11;
  5.  
  6. function counter($obj, $what)
  7. {
  8. $sum = array();
  9.  
  10. foreach($obj as $num)
  11. {
  12.  
  13. list($no) = explode(',', $num);
  14.  
  15. if($no == $what)
  16.  
  17. {
  18.  
  19. $sum[] = $no;
  20.  
  21. }
  22.  
  23. }
  24.  
  25. return count($sum);
  26.  
  27. }
  28. $get = counter($tab, $input);
  29.  
  30. $x = ($get > 1) ? ' razy' : ' raz';
  31. echo 'wartość: ' . $input . ' wystepuje: ' . $get . $x;
  32.  
  33.  
  34. ?>


Oczywiscie te dwa przyklady sa bardzo pobobne bo w drugim zamiast uzyc pobrania od razu w petli => $value bawimy sie list-em i explode.
Go to the top of the page
+Quote Post

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: 22.08.2025 - 14:07