Ik heb een msn-bot en ik wil nu dat als mensen Hallo typen dat hij niet altijd de standaard-tekst neemt. Ik heb dat nu zo gedaan:
$getal = rand(1, 3);
$hallo1 = Hoi
$hallo2 = Ej
$hallo3 = Moi
Als message zend ik nu $hallo$getal dat werkt niet hoe kan ik het klaar krijgen dat hij $hallo+RANDOM GETAL
doet?
Als je op die manier $hallo hebt gevuld, kun je een random-waarde als volgt bepalen:
$rnd = rand(0, count($hallo)-1);
echo $hallo[$rnd];
Op die manier kun je begroetingen toevoegen en verwijderen zoveel je wilt, en hoef je nooit te tellen hoeveel er zijn.
Met je $hallo<num> - constructie, krijg je een probleem als je later besluit om $hallo2 weg te halen. Je moet dan $hallo3 tot en met $hallo32767 opnieuw gaan nummeren en je rand()-commando aanpassen. Dat hoeft allemaal niet als je goed met arrays omgaat.
EDIT: En uiteraard kan het nóg eenvoudiger ;-) Zet al je begroetingen in een bestand hallo.txt; 1 begroeting per regel. Lees vervolgens je bestand als volgt in een array:
<?
$hallo = file("hallo.txt");
$numhallo = count($hallo);
$rndhallo = rand(0, $numhallo-1);
$groet = $hallo[$rndhallo];
echo $groet;
?>
Het toevoegen of verwijderen van een begroeting kun je nu doen door hallo.txt aan te passen. Omdat er geen wijzigingen in je code meer nodig zijn, hoef je niet bang te zijn voor tikfouten waardoor je script ermee stopt.
Dan kan je gewoon de laatste weghalen en die op de 2e plek neerzetten ;)
Als je je begroetingen hebt gesorteerd (en gesorteerd wilt houden) wordt dat wat lastiger. Bovendien moet je dan nog steeds je rand()-commando aanpassen.
Het is inmiddels helemaal gelukt
Nu nog iets anders gebruikers typen een bericht als $msg en krijgen een bericht terug als $message
Hoe kan ik het zo maken dat als gebruikers intypen 8*8 dat hij dan dat uitrekent?
Het is inmiddels helemaal gelukt
Nu nog iets anders gebruikers typen een bericht als $msg en krijgen een bericht terug als $message
Hoe kan ik het zo maken dat als gebruikers intypen 8*8 dat hij dan dat uitrekent?
Je zou een regex kunnen maken die kijkt of een string alleen uit cijfers en operatoren bestaat.
Indien dat het geval is, kun je met eval($berichttekst) de code laten uitvoeren.