Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [PHP] Type casting di stringhe true / false

    Dal parsing di una stringa XML ottengo delle variabili che possono avere come valore "true" o "false", ma sono delle stringhe.
    Esiste una funzione nativa per il typecasting delle stringhe che restituisce un valore booleano?

    Immaginavo dovesse esistere qualcosa come (bool)$a, visto che esiste (int)$a, ma il manuale www.php.net non dà conferma.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Premetto che il tuo valore per true sia pippo

    $risultato = $valore == "pippo" ? true : false;
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Io avevo pensato a qualcosa di un po' più completo...

    Codice PHP:
    function bool($var) { // strings tyecasting as boolean values:
        
    switch ($var) {
        case (
    "true"):
            return 
    true;
            break;
        case (
    "false"):
            return 
    false;
            break;
        default:
            die(
    "
    \n[b]Warning:[/b] Invalid argument supplied for "
    .__FUNCTION__." function in [b]".__FILE__."[/b] on line [b]".__LINE__."[/b]: the argument can contain only 'true' or 'false' values as string.
    \n"
    );
        }

    con messaggi di errore in stile PHP.
    Però la tua soluzione è leggera e utile nel caso di output sicuri, "true" o "false".
    Grazie!

    [edit]
    "Pippo" non è contemplato nel mio XML...
    codice:
    <TransactionCompleted>true</TransactionCompleted>
    // oppure
    <TransactionCompleted>false</TransactionCompleted>
    [/edit]
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da emanueledg
    Io avevo pensato a qualcosa di un po' più completo...

    Codice PHP:
    function bool($var) { // strings tyecasting as boolean values:
        
    switch ($var) {
        case (
    "true"):
            return 
    true;
            break;
        case (
    "false"):
            return 
    false;
            break;
        default:
            die(
    "
    \n[b]Warning:[/b] Invalid argument supplied for "
    .__FUNCTION__." function in [b]".__FILE__."[/b] on line [b]".__LINE__."[/b]: the argument can contain only 'true' or 'false' values as string.
    \n"
    );
        }


    con messaggi di errore in stile PHP.
    Però la tua soluzione è leggera e utile nel caso di output sicuri, "true" o "false".
    Grazie!

    [edit]
    "Pippo" non è contemplato nel mio XML...
    codice:
    <TransactionCompleted>true</TransactionCompleted>
    // oppure
    <TransactionCompleted>false</TransactionCompleted>
    [/edit]
    Allora devi confrontare valori in maiuscole o minuscole perche se ti viene scritto "True" non andrà bene.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Lo sapevo che sei un grande...
    Infatti mancava quell'ultimo accorgimento:

    Codice PHP:
    // strings tyecasting as boolean values:
    function bool($var) {
        switch (
    $var) {
            case (
    strtolower("true")):
                return 
    true;
                break;
            case (
    strtolower("false")):
                return 
    false;
                break;
            default:
                die(
    "
    \n[b]Warning:[/b] Invalid argument supplied for "
    .__FUNCTION__." function in [b]".__FILE__."[/b] on line [b]".__LINE__."[/b]: the argument can contain only 'true' or 'false' values as a string.
    \n"
    );
        }

    Ora è perfetto, grazie.
    Peccato che non sia implementata nel core di PHP.
    Provo a segnalarlo per una futura release di PHP5.

    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da emanueledg
    Lo sapevo che sei un grande...
    Infatti mancava quell'ultimo accorgimento:

    Codice PHP:
    // strings tyecasting as boolean values:
    function bool($var) {
        switch (
    $var) {
            case (
    strtolower("true")):
                return 
    true;
                break;
            case (
    strtolower("false")):
                return 
    false;
                break;
            default:
                die(
    "
    \n[b]Warning:[/b] Invalid argument supplied for "
    .__FUNCTION__." function in [b]".__FILE__."[/b] on line [b]".__LINE__."[/b]: the argument can contain only 'true' or 'false' values as a string.
    \n"
    );
        }

    Ora è perfetto, grazie.
    Peccato che non sia implementata nel core di PHP.
    Provo a segnalarlo per una futura release di PHP5.

    Infatti....

    Codice PHP:
    // strings tyecasting as boolean values:
    function bool($var) {
        switch (
    strtolower($var)) {
            case (
    "true"):
                return 
    true;
                break;
            case (
    "false"):
                return 
    false;
                break;
            default:
                die(
    "
    \n[b]Warning:[/b] Invalid argument supplied for "
    .__FUNCTION__." function in [b]".__FILE__."[/b] on line [b]".__LINE__."[/b]: the argument can contain only 'true' or 'false' values as a string.
    \n"
    );
        }

    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Grazie!

    Fatto, nota postata su http://it.php.net/manual/it/function.is-bool.php
    Tra qualche ora sarà visibile.

    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  8. #8
    :rollo:
    Ho fatto una cavolata...
    (bool) in PHP esiste, solo che nel manuale non è sotto le funzioni perché non è una funzione, ma un convertitore di tipo (correggetemi se sbaglio).

    Però d'altro canto è anche vero che il nativo typecaster (bool) di PHP non ha lo stesso comportamento della funzione bool() che ho scritto, infatti

    Codice PHP:

    $a 
    "false";

    $b = (bool)$a // $b è TRUE perché una stringa è sempre vera (escluso il caso "0" e stringa vuota);
    $b bool($a)    /* $b è FALSE come sarebbe giusto nel caso di dover 
            valutare una stringa proveniente da un tag XML */ 
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

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.