Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Źle iteruje po pętli
Look85
post 8.04.2018, 22:07:46
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 8.04.2018

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


Program ma zmieniać cyfry arabskie na rzymskie.
Mecze się już z tym chwile i nie wiem dlaczego nie chce to działać, np. dubluje cyfry tak jak tutaj 48487 zamiast 487 albo cyfry 2 w ogóle nie zamienia na "II".
Wynik zwraca taki:
4
IIIIII
4848vII
I23238
III005I
I
4646vIIvII8vII


  1. <?php
  2. $num = array("4", "33", "487", "123238", "1110051", "1", "467787");
  3. $amo = count($num);
  4.  
  5. for($i=0; $i<$amo; $i++){
  6.  
  7. $dlrekordu = strlen($num[$i]);
  8. $arrnum= $num[$i];
  9.  
  10. for($j=0; $j<$dlrekordu; $j++){
  11.  
  12. if($arrnum[$j]=="1"){
  13. echo str_replace("1", "I", $arrnum);
  14. break;
  15. }
  16. elseif($arrnum[$j]=="2"){
  17. echo str_replace("2", "II", $arrnum);
  18. break;
  19. }
  20. elseif($arrnum[$j]=="3"){
  21. echo str_replace("3", "III", $arrnum);
  22. break;
  23. }
  24. elseif($arrnum[$j]=="7"){
  25. echo str_replace("7", "vII", $arrnum);
  26. break;
  27. }
  28. else {
  29. echo $arrnum[$j];
  30.  
  31. };
  32.  
  33.  
  34. };
  35. echo "<br/>";
  36.  
  37.  
  38. }
  39. ?>
Go to the top of the page
+Quote Post
nospor
post 9.04.2018, 09:05:41
Post #2





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Zdziebko krocej i mniej szans na bledy wink.gif

  1. $num = array("4", "33", "487", "123238", "1110051", "1", "467787");
  2.  
  3. $replaceFrom = [1, 2, 3, 7];
  4. $replaceTo = ['I', 'II', 'III', 'VII'];
  5.  
  6. foreach ($num as $n) {
  7.  
  8. echo str_replace($replaceFrom, $replaceTo, $n);
  9. echo "\n";
  10. }


zas co do twojego kodu z pierwszego posta:
zrobiles dwa bledy:
1) robiles str_replace na calym tekscie zamiast tylko na danym kawalku
2) robiles break zamiast continue. break konczy petle od razu temu np. gdy zamienilo ci 1 to do 2 juz nie dochodzlo bo wychodziles z petli


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Look85
post 9.04.2018, 11:18:33
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 8.04.2018

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


Wielkie dzięki!
Sporo czasu wczoraj spędziłem szukając czemu to nie działa, co ciekaw dodałem "echo str_replace("3", "III", $arrnum[$j])" oraz continue ale jakoś mi nie wychodziło.
Wiem ze można prościej ale tutaj może być na około bo chodzi wyłącznie o naukę i wyczajenie jak o wszystko działa smile.gif
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: 24.04.2024 - 04:31