Niubbo (Normal User)
Rookie
Messaggi: 55
Iscritto: 02/02/2013
|
ciao
eccomi qua finalmente a programma in php
dopo tanti programmini banali ho pensato di fare un programma che scanna una stringa e ne conta i caratteri. tanto per provare qualcosa
il codice è questo
----------------------------------------
<html>
<body>
<?php
$a=0;
$i=0;
$frase = "ciao mondo.";
for ($i=0; $a == 0 ;$i++){
if (frase[$i] == '.'){
$a=1;
echo "a=1";
}
}
$i++;
echo "hai scritto $i caratteri";
?>
</body>
</html>
----------------------------------------
mi da errore nel if.. dice che non si aspetta [...
allora come si fa scannare una stringa? esiste un carattere di fine stringa(tipo \n)?
quello che non comprendo è che se faccio
echo frase[2];
funziona!
niubbo
|
|
()
Newbie
Messaggi:
Iscritto:
|
Codice sorgente - presumibilmente Php |
<html> <body> <?php $a=0; $i=0; $frase = "ciao mondo."; for ($i=0; $i < 11 ;$i++){ if ($frase[$i] == '.'){ echo $frase[$i]; } } $i = $i + 1; echo " hai scritto $i caratteri"; ?> </body> </html>
|
Logicamente il tuo codice non ha molto senso, ma sintatticamente mancava il $ prima di frase nell' if
Ultima modifica effettuata da il 07/02/2013 alle 18:04 |
|
Niubbo (Normal User)
Rookie
Messaggi: 55
Iscritto: 02/02/2013
|
ciao Juster!
grazie per la dritta.. davvero questo $ mi è antipatico perche lo devo portare sempre dietro!
lo so che non ha senso in php, ma era un esercizio per provare a fare qualcosa. perche leggere soltanto la teoria non ha senso. tra poco inizio con il database e allora ci sara da divertirsi
niubbo!
|
|
Qwertj (Dev Team)
Guru
Messaggi: 678
Iscritto: 30/05/2011
|
le stringhe, come in tutti i linguaggi di programmazione c-like, sono array in PHP
e si scorrono come qualsiasi array
Codice sorgente - presumibilmente Plain Text |
for($i = 0; $i < count($string); ++$i) echo "carattere $i: " . $string[$i] . "\n";
|
o ancora meglio in PHP
Codice sorgente - presumibilmente PHP |
for($c in $string) echo "carattere " . ++$ . ": $c\n";
|
|
|
Niubbo (Normal User)
Rookie
Messaggi: 55
Iscritto: 02/02/2013
|
ciao Qwertj,
l'esempio messo sopra ora funziona perche avevo dimenticato il segno $ come mi ha destto Juster. ma voglio chiderti riguardo il tuo codice:
for($c in $string) echo "carattere " . ++$ . ": $c\n";
|
cosa vuol dire l'istruzione "$c in $string"?
e quel "++$" è giusto cosi o manca la varibile?
perche hai aggiunto il simbolo \n? nel linguaggio c mi pare che sia il carattere di fine stringa.
ora sono andato oltre e ho letto le numerose funzioni per array, stringhe date ecc.. (devo dire un sacco!) e ho pensato di fare una funziona mia tanto per provare queste cose.. quindi ho fatto questo codice e vorrei chiedere a voi il perche non funziona:
Codice sorgente - presumibilmente Php |
<html> <body> <?php function ordine_inverso($stringa){ $j=0; $i=0; for ($i=($x-1);$i>=0;$i--){ $c[$j]=$stringa[$i]; $j++; } return $c; } $frase = "ciao mondo."; echo "la variabile frase ha lunghezza ".strlen($frase)."<br>"; echo ordine_inverso($frase)."<br>"; ?> </body> </html>
|
perche mi stampa la parola Array e non la frase inversa?!
cosa ho sbagliato?
se potete gentilmente di rispondermi con un minimo di spiegazioni cosi capisco..
sto cercando di capire ed imparare il php vi chiedo questo piccolo aiuto.
grazie in anticipo
Niubbo
Ultima modifica effettuata da Niubbo il 09/02/2013 alle 12:45 |
|
()
Newbie
Messaggi:
Iscritto:
|
Se fossi in te farei un ciclo for con indice che parte da 1 ed arriva fino alla lunghezza di stringa + 1(incrementando di uno ogni volta l' indice) poi fare echo $stringa[strlen($stringa) - indice]; tanto per intenderci:
Codice sorgente - presumibilmente Php |
function ordine_inverso($stringa){ $inverso = ""; for ($i = 1; i < strlen($stringa) + 1; i++) { $inverso += $stringa[strlen($stringa) - i]; } return $inverso; } <?php echo ordine_inverso("prova"); ?>
|
Ultima modifica effettuata da il 09/02/2013 alle 14:20 |
|
Niubbo (Normal User)
Rookie
Messaggi: 55
Iscritto: 02/02/2013
|
ho provato a copiare ed eseguire il tuo codice (a parte gli errori per il $ mancante ) mi ha dato errore fatale nella riga in qui richiami la funzione (penso perche hai messo la funzione fuori dal codice php). quindi l'ho rimessa dentro, ma non funziona. nel senso che alla fine mi stampa 0!
allora sono andato a cercare e studiare meglio le stringhe perche mi ricordo di aver letto qualcosa sulla concatenzione e bingo!
l'istruzione giusta da scrivere sarebbe questa:
Codice sorgente - presumibilmente Plain Text |
$inverso = $inverso.$stringa[strlen($stringa) - $i];
|
il punto è l'operatore di concatenamento e funziona alla perfezione!
ora però voglio capire perche il mio non andava
grazie Juster
|
|
()
Newbie
Messaggi:
Iscritto:
|
Ah giusto! mi viene troppo naturale usare il + xD Comunque basta sostituire $c[$j]=$stringa[$i]; con
Codice sorgente - presumibilmente Plain Text |
e tutto andrà in modo perfetto. poi $j non servirà più a nulla.
|
|
Niubbo (Normal User)
Rookie
Messaggi: 55
Iscritto: 02/02/2013
|
infatti e quello che ho fatto e funziona!
grazie Juster.. mi hai aiutato un sacco
|
|