Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Rozróżnianie zmiennej
Forum PHP.pl > Forum > Przedszkole
TheDuliMen
Chodzi mi o to że np jeśli ostatnia cyfra w zmiennej $przykladowa to '1','2','3','4' to w zmiennej $przykladowa2 ma być 'metra' a jeśli '0','5','6','7','8','9' to w $przykladowa2 ma być 'metrów'. Kolega mi mówił że na wyrażeniach regularnych że można pobrać ostatnią cyfrę ale tego znaleźć nie mogę.
SmokAnalog
  1. switch(substr($przykladowa, -1)) {
  2. case '1':
  3. case '2':
  4. case '3':
  5. case '4':
  6. $przykladowa2 = 'metra';
  7. break;
  8. default:
  9. $przykladowa2 = 'metrów';
  10. }
TheDuliMen
  1. preg_match('#Długość toru:\s*(\d*)#', $raport, $tablica); // Długość toru
  2. $dlugosc_toru = $tablica[1]; // Liczba
  3. $dlugosc_toru2 = $dlugosc_toru / 1000; // Liczba kilometrowa
  4. switch(substr($dlugosc_toru2, -1)) {
  5. case '1':
  6. case '2':
  7. case '3':
  8. case '4':
  9. $dlugosc_toru3 = 'metra'; // Jednostka
  10. break;
  11. default:
  12. $dlugosc_toru3 = 'metrów'; // Jednostka
  13. }

$dlugosc_toru2 '5437' a $dlugosc_toru3 = 'metra' dziwne... Sprawdziłem poprawność pobranego elementu $tablica[0] i jest on poprawny.
SmokAnalog
Jesteś pewien, że wyrażenie:
  1. $dlugosc_toru2 = $dlugosc_toru / 1000;

nie daje Ci liczby zmiennoprzecinkowej? W takim przypadku ten mój przykład weźmie ostatnią cyfrę liczby zmiennoprzecinkowej, czyli ostatnią cyfrę ułamka. Przykładowo, dla $dlugosc_toru / 1000 = 1.23, kryterium przyznawania końcówki będzie cyfra 3, a nie 1.
TheDuliMen
  1. preg_match('#Długość toru:\s*(\d*)#', $raport, $tablica); // Długość toru
  2. $dlugosc_toru = $tablica[1]; // Liczba
  3. $dlugosc_toru2 = $dlugosc_toru / 1000; // Liczba kilometrowa
  4. switch(substr($dlugosc_toru2, -1)) {
  5. case '1':
  6. case '2':
  7. case '3':
  8. case '4':
  9. $dlugosc_toru3 = 'metra'; // Jednostka
  10. break;
  11. default:
  12. $dlugosc_toru3 = 'metrów'; // Jednostka
  13. }


Miało być
  1. preg_match('#Długość toru:\s*(\d*)#', $raport, $tablica); // Długość toru
  2. $dlugosc_toru = $tablica[1]; // Liczba
  3. $dlugosc_toru2 = $dlugosc_toru / 1000; // Liczba kilometrowa
  4. switch(substr($dlugosc_toru, -1)) {
  5. case '1':
  6. case '2':
  7. case '3':
  8. case '4':
  9. $dlugosc_toru3 = 'metra'; // Jednostka
  10. break;
  11. default:
  12. $dlugosc_toru3 = 'metrów'; // Jednostka
  13. }
SmokAnalog
Jeśli interesuje Cię informacja o liczbie kilometrów, to powinieneś zrobić coś w stylu:
  1. preg_match('#Długość toru:\s*(\d*)#', $raport, $tablica); // Długość toru
  2. $dlugosc_toru_metry = $tablica[1]; // Liczba
  3. $dlugosc_toru_kilometry = floor($dlugosc_toru / 1000); // Liczba kilometrowa
  4. switch(substr($dlugosc_toru_kilometry, -1)) {
  5. case '1':
  6. case '2':
  7. case '3':
  8. case '4':
  9. $jednostka= 'metra'; // Jednostka
  10. break;
  11. default:
  12. $jednostka= 'metrów'; // Jednostka
  13. }

Zwróć uwagę, że zmieniłem nazwy zmiennych na takie, które coś mówią. Unikaj nazewnictwa typu $coś1, $coś2 itp., bo się pogubisz.
TheDuliMen
Ja tak nazywam że maksymalnie zmiennych jest 4 czyli maks $przyklad4 ale wszystko zapisuje w /* */\

  1. $dlugosc_toru_kilometry = floor($dlugosc_toru / 1000); // Liczba kilometrowa

Ja wolę jednak taki zapis:
  1. $dlugosc_toru_kilometry = $dlugosc_toru / 1000; // Liczba kilometrowa
[/php]
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.