Oppure

Loading
06/02/13 21:59
Niubbo
ciao
eccomi qua finalmente a programma in php:D
dopo tanti programmini banali ho pensato di fare un programma che scanna una stringa e ne conta i caratteri. tanto per provare qualcosa8-|
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!

niubbo8-|
aaa
07/02/13 16:59
<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 07/02/13 17:04
07/02/13 17:13
Niubbo
ciao Juster!
grazie per la dritta.. davvero questo $ mi è antipatico perche lo devo portare sempre dietro!:-o
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!8-|
aaa
08/02/13 13:14
Qwertj
le stringhe, come in tutti i linguaggi di programmazione c-like, sono array in PHP
e si scorrono come qualsiasi array
for($i = 0; $i < count($string); ++$i) echo "carattere $i: " . $string[$i] . "\n";

o ancora meglio in PHP
for($c in $string) echo "carattere " . ++$ . ": $c\n";
aaa
09/02/13 11:44
Niubbo
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:
<html>
<body>
<?php
function ordine_inverso($stringa){
	$x=strlen($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
Niubbo8-|
Ultima modifica effettuata da Niubbo 09/02/13 11:45
aaa
09/02/13 13:14
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:

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 09/02/13 13:20
09/02/13 13:57
Niubbo
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!:idea:
l'istruzione giusta da scrivere sarebbe questa:
$inverso = $inverso.$stringa[strlen($stringa) - $i];


il punto è l'operatore di concatenamento e funziona alla perfezione!:k:
ora però voglio capire perche il mio non andava:D
grazie Juster:k:
aaa
09/02/13 14:12
Ah giusto! mi viene troppo naturale usare il + xD Comunque basta sostituire $c[$j]=$stringa[$i]; con
$c=$c.$stringa[$i];
e tutto andrà in modo perfetto. poi $j non servirà più a nulla.