Ebben a funkcióban, hogy lehetne ezeket megoldani?
Első problémám ezzel a funkcióval, hogy nem lehet egyből stringet bele írni hanem változóval kell.
Tehát nem engedi ezt: azonosito("A"); hanem csak ezt engedi $valami = "A"; azonosito($valami);
Ha egyből stringet írok bele akkor nem csinál semmit valamiért.
Ez miért lehet?
Illetve azt, hogy lehetne megoldani, hogy ha többször futtatom ezt a funkciót egymás után akkor mindig ugyanazt adja vissza és ne haladjon tovább?
Pl.:
$valami = "A";
azonosito($valami); -> B
azonosito($valami); -> B
azonosito($valami); -> B
azonosito($valami); -> B
azonosito($valami); -> B
B-t kellene visszaadnia az összesre ehelyett megy tovább B,C,D,E,F-re.
function azonosito(&$string)
{
$last_char = substr($string, -1);
$rest = substr($string, 0, -1);
switch($last_char)
{
case '9':
$next = 'a';
break;
case 'z':
$next = 'A';
break;
case 'Z':
azonosito($rest);
$next = '0';
break;
default:
$next = ++$last_char;
}
return $string = $rest.$next;
}
Hogy miért nem működik az azonosito("A")? Egyszerű:
return $string = $rest.$next;
Ezért. Literálnak nem tudsz értéket adni. Elég idétlen is lenne azt mondani, hogy "A" = "B". A függvényed viszont valami ilyesmit próbálna meg tenni.
<?php
$valami = azonosito("A");
$valami = azonosito("A");
$valami = azonosito("A");
$valami = azonosito("A");
$valami = azonosito("A");
function azonosito($string)
{
$last_char = substr($string, -1);
$rest = substr($string, 0, -1);
switch($last_char)
{
case '9':
$next = 'a';
break;
case 'z':
$next = 'A';
break;
case 'Z':
$rest = azonosito($rest);
$next = '0';
break;
default:
$next = ++$last_char;
}
return $rest.$next;
}
?>
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!