Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Errore printf

  1. #1
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128

    Errore printf

    Sto creando una funzione per tradurre

    Codice PHP:
    function translate ($a$b$c) {

    if (
    $c != 1) {

    $trad printf($a$c);

    }else{

    $trad printf($b$c);

    }

    }

    //dovrebbe scrivermi "Ci sono 5 stringhe" invece mi scrive "ci sono 5 stringhe18"
    echo translate("ci sono %s stringhe""ce %s stringa"5);

    //dovrebbe scrivermi "Ce 1 stringa" invece mi scrive "ce 1 stringa12"
    echo translate("ci sono %s stringhe""ce %s stringa"1); 
    Come se mi aggiungesse alla fine il numero di caratteri, come mai?

  2. #2
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    se alla fine della funzione metto

    Codice PHP:

    function translate ($a$b$c) {

    if (
    $c != 1) {

    $trad printf($a$c);

    }else{

    $trad printf($b$c);

    }

    return 
    $trad;


    mi viene fuori l'errore di cui dicevo, altrimento se lascio senza è tutto ok come mai?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    Guarda qui: http://php.net/manual/en/function.printf.php

    dove descrive l'output della funzione c'è scritto: Returns the length of the outputted string

    se tu fai echo translate(...), la funzione translate scrive le stringhe, e ha come valore di ritorno $trad che sarà il numreo di caratteri della stringa, e la funzione echo stamperà tale valore...
    Jekkil

  4. #4
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    grazie quindi basta non utilizzare return

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    la cosa più corretta è non utilizzare echo.

    Tanto nel momento della chiamata della funzione, la printf prevede già la stampa a video.

    Se utilizzare o meno il return sta a te. Se vuoi sapere quanti dati sono stati stampati usa il return, se no no.

    se fai $caratteri = translate(...)

    a video avrai la stringa stampata, mentre nella variabile $caratteri avrai il numero di caratteri stampati che potrai usare in tutti i modi che vorrai.
    Jekkil

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.