|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2015
Messaggi: 5
|
[PHP] Dubbio su ciclo for + include
Salve a tutti,
Avrei un piccolo dubbio sulla logica alla base dell'istruzione "include". Il dubbio è nato dall'analisi di questo semplice script php ("index.php") che, semplicemente, dovrebbe contare i numeri da 1 a 10 per poi stamparli su schermo eseguendo l'istruzione del file "count.html". index.php: Codice:
<?php
$output = "";
for ($count = 1; $count <= 10; ++$count)
{
$output .= "$count ";
}
include "count.html";
Codice:
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="utf-8">
<title>test 1</title>
</head>
<body>
<p>
<?php echo $output; ?>
</p>
</body>
</html>
Ragionando linearmente, quali sono i passaggi d'esecuzione del codice della pagina "index.php"? Come andrebbe letto a livello di passaggi ripetuti in ciclo? Nella mia testa il ciclo for dovrebbe continuare a impostare i nuovi valori della variabile $output fino a quando $count sia <=10 e solo dopo passare all'istruzione include "count.html". Quindi, nella mia testa, il valore $output dovrebbe sovrascriversi fino ad essere uguale a 10 e solo a quel punto passare all'istruzione include stampando su schermo unicamente il valore 10. Chiaramente non è così e, count.html, stampa su schermo il seguente risultato: 1 2 3 4 5 6 7 8 9 10 Spero di essere riuscito a spiegarmi. Sapreste aiutarmi? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
|
Il tuo ragionamento non fà una grinza! A parte il fatto che in quello specifico esempio la variabile $output non venga sovrascritta ma funga da accumulatore per il valore $count.
L'istruzione $output .= "$count " concanena "$count " all'ultimo valore di $output. Per ottenere il comportamente da te immaginato ti basta levare il . e lasciare solo =. Tutto ti sarà più chiaro guardando qui
__________________
iMac 27" 5K |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2003
Messaggi: 1174
|
Puoi sempre includere un if all'interno del tuo ciclo for.
Quindi diventerebbe: Codice:
if ($count === 10) {
include "count.html";
}
__________________
VENDITORI ONESTI: krieger, Corrente Elettrica, Cina.Z, Poliacido, Fedemike82, Lucas01, rikop, SystemR89 VENDITORI DA EVITARE: Ancora nessuno |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Oct 2015
Messaggi: 5
|
Perfetto! Dunque la mia lacuna, in realtà, è legata al funzionamento di questo operatore:
.= Riassumendo, scrivere questo: Codice:
$a .= $b Codice:
$a = $a . "$b" Ho provato a fare questo esperimento: Codice:
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="utf-8">
<title>test 1</title>
</head>
<body>
<?
$a = "";
for ($b = 1; $b <=10; ++$b)
{
$a .= "$b ";
}
echo "$a";
?>
</body>
</html>
Richiedendo l'echo di $a (alla fine del ciclo) dovrei ottenere questo: $a . "$b" dove $b, sempre alla fine del ciclo, dovrebbe avere il valore di 10! Cosa continua a sfuggirmi?? Ultima modifica di Omicron36 : 22-10-2015 alle 15:10. |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Oct 2015
Messaggi: 5
|
Eureka!
Ho finalmente compreso. In sostanza, durante il ciclo, la variabile $a acquisisce cumulativamente pezzetti di testo! Prima $a è vuota. Poi diventa "1 " Poi diventa "1 2 " Poi diventa "1 2 3 " E così via. Dunque, alla fine del ciclo, $a sarà semplicemente 1 2 3 4 5 6 7 8 9 10! Perfetto. Grazie mille per l'aiuto, non avevo colto di aver male interpretato, in realtà, il funzionamento dell'operatore .= Alla prossima! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:27.



















