Originariamente inviato da bigdada
sono un apprendista ed ho appena iniziato ad utilizzare php, quindi potrei aver sbagliato qualcosa di elementare, per questo chiedo scusa in anticipo.
mi è capitato di dover creare un convertitore di basi numeriche, per ora ho fatto solo da decimale a binario.
per programmare uso Netbeans e per pubblicare EasyPHP.
quando eseguo il codice mi dice che ci mette più di 30 secondi per l'esecuzione della riga 16 (marcata in rosso) e si interrompe il programma.
il $_GET è corretto (l'ho preso da un forum).
quasto è il codice:
...
L'errore non è di PHP ma di logica dell'algoritmo. Il fatto che vada in timeout con una esecuzione che dura più di 30 sec dovrebbe farti pensare: forse entro in un ciclo infinito e meno male che mi stoppa il timeout.

Il tuo cilco:
Codice PHP:
for ($i 0$t >= 0$i++) {
    
$resto $t 2;
    
$t2 $risultato.$resto;
    
$risultato $t2;
    
$t $t 2;

Qual'è la condizione che determina l'uscita dal ciclo? che $t sia minore di 0 ossia che $t contenga un valore negativo.
Qual'è la riga che modifica il contenuto di $t affinché il ciclo possa avere fine? $t=$t/2

Ora possiamo chiederci: in quale universo divisioni successive per due possono produrre un numero minore di 0? Al più potrai avere 0 con un certo resto, senza considerare che $t/2 produce un numero di tipo float, il che vuol dire che potresti avvicinarti allo 0 senza mai raggiungerlo se il numero da convertire non è pari.

Ecco trovato il tuo ciclo infinito che ti porta al timeout. Dopo questo minimo di troubleshooting possiamo passare a formula la correzione che consiste nel porre come condizione d'uscita $t==0 e come operazione di modifica di $t all'interno del ciclo $t=floor($t/2); ossia la parte intera ottenuta dalla divisione per 2 di $t.

Per ultimo, alla fine della riga rossa manca il ; ma forse te lo sei mangiato per farla rossa!