Diskuze: PHP - změna textu
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ja by som to riešil takto samozrejme ak nutne nepotrebuješ použitie toho array. Je to len príklad pre rozšírenie znalosti
$vstup = "2218818";
$first = substr($vstup, 0, 1);
switch ($first){
case "1":
echo "1";
break;
case "2":
echo "2";
break;
default:
echo "Ani jedna z možností";
Moc děkuju za pomoc. Zkusil jsem obě metody a funguje to. Jen mám problém pokud mi $vstup začíná například na 34 nebo 443. substr($vstup, 0, 1); mi vezme první znak, ale co když mi bude $vstup začínat na 2 nebo 3 cifernou hodnotu ??? Jde to nějak ošetřit ?
Promiň, zkusím to popsat na jiném příkladu. Někdo mi přes formulář vloží do $vstup číslo 420123456789 a já potřebuju toto změnit na "česko", když to bude 421123456789 tak zase na "slovensko", ale také když to bude třeba 45123456789 tak to změnit na "dánkso"...
Jestliže se délka začátku proměnné $vstup mění, tak musíš dát svému algoritmu najevo, jako délku zrovna teď chceš:
$vstup = '420123456789';
$zeme= array (
'4' => 'Země nezemě',
'420' => 'Česko'
);
// Vstup začíná na 4, ale i na 420, co z toho se má vybrat?
Pokud chceš vybrat vždy to nejdelší (takže z 4 a 420 se vybere právě 420), pak bys musel procházet pole a zjišťovat, jaký nejdelší klíč se shoduje se vstupem:
$vstup = '420123456789';
$zeme= array (
'4' => 'Země nezemě',
'420' => 'Česko'
);
for ($i = 0, $l = strlen($vstup); $i < $l; $i++) {
$cast = substr($vstup, 0, $l - $i);
if (isset($zeme[$cast])) {
echo $zeme[$cast];
break;
}
}
Tento algoritmus zapřičiní, že se bude $vstup v cyklu postupně zkracovat a zkoušet, zda byl nalezen v poli:
$vstup = '420123456789';
// existuje $zeme['420123456789']?
// existuje $zeme['42012345678']?
// existuje $zeme['4201234567']?
// existuje $zeme['420123456']?
// existuje $zeme['42012345']?
// existuje $zeme['4201234']?
// existuje $zeme['420123']?
// existuje $zeme['42012']?
// existuje $zeme['4201']?
// existuje $zeme['420']? ANO - zastav cyklus a vypiš $zeme['420']
$vstup = "199878252";
$ovoce = array (
'1' => 'hruska',
'2' => 'jablko'
);
$prvniZnak = substr($vstup, 0, 1);
echo $ovoce[$prvniZnak];
Pocet znaku urcujes tim kolik vratis z funkce substr do promenne $prvniZnak. Tedy, pokud chces porovnavat 3 ciselne kombinace tak bych zvolil:
$prvniZnak = substr($vstup, 0, 3);
Pro ruzny pocet nejspis cyklus.
Zobrazeno 9 zpráv z 9.