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

    uguaglianza tra stringhe

    Ciao a tutti premetto che sono un novellino del php e che proveniendo dal java talvolta trovo delle difficoltà come in questo caso, devo fare un semplicissimo confronto tra stringhe ma la cosa non funge e non capisco xchè:
    codice:
    $ordinamento = $_SESSION['sessione'][3];
    if($ordinamento == "ASC" || $ordinamento=="asc"){
    	$mode = "ASC";
    	echo "ASCENDENTE";
    }
    else if($ordinamento=="DESC" || $ordinamento=="desc"){	                 
            $mode = "DESC";
    	echo "DISCENDENTE";
    }else{
    	$mode = "DESC";
    	echo "NESSUNA";
    }
    
    echo "Mode: $mode";
    Nonostante nella variabile di sessione ci sia il valore "ASC" in ogni caso mi viene stampato discendente e la variabile mode prende il valore desc
    Da cosa dipende?Dove sto sbagliando?
    Grazie

    Ciao

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    ho inserito questa riga ed il codice funziona:
    codice:
    $ordinamento = "ASC"; //$_SESSION['sessione'][3];
    controlla $_SESSION['sessione'][3], magari fai un echo prima per vedere. prova inoltre a fare il casting della variabile.
    think simple think ringo

  3. #3
    perchè il casting? (e tra l'altro come si fa in php?) se fa il controllo con la variabile intermedia xchè non lo fa anche nel mio modo?

  4. #4

  5. #5

    Re: uguaglianza tra stringhe

    non so cosa marketto intendesse fare col casting.
    In php il casting è automatico e qualche volta può fuorviare ma non so come in questo caso.
    Per forzarlo basta scrivere il tipo di variabile
    codice:
    $valore = "1"; // stringa
    $intero = (int)$valore; // forzo ad intero
    $pippo = (string)$intero; // forzo a stringa
    vedi qui

    per il resto ctrl che $_SESSION['sessione'] sia effettivamente quello che pensi in questo modo
    codice:
    $ordinamento = strtoupper($_SESSION['sessione'][3]); // trasformo tutto in maiuscolo
    if($ordinamento=="ASC") {
    	$mode = "ASC";
    	echo "ASCENDENTE;
    }
    else if($ordinamento=="DESC"){
            $mode = "DESC";
    	echo "DISCENDENTE";
    }else{
    	$mode = "DESC";
    	echo "NESSUNA";
    }
    
    echo "Mode: $mode->".$_SESSION['sessione'][3];
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

  6. #6
    non è possibile...non riesco nemmeno a fare un confronto tra stringhe, fatto così:
    codice:
    $ordinamento = strtoupper($_SESSION['sessione'][3]); 
    $test1 = "ASC";
    $test2 = "DESC";
    if($ordinamento==$test1) {
    	$mode = "ASC";
    	echo "ASCENDENTE";
    }
    else if($ordinamento==$test2){
            $mode = "DESC";
    	echo "DISCENDENTE";
    }else{
    	$mode = "DESC";
    	echo "NESSUNA";
    }
    
    echo "Mode: $mode->".$_SESSION['sessione'][3];
    non ne vuol sapere di funzionare e stampa sempre:
    NESSUNA Mode: DESC->ASC

  7. #7
    Io l'ho provato e funziona, prova a mettere un trim, magari alla fine c'è uno spazio bianco, che sicuramente da fastidio

  8. #8
    ok trovato il problema...sono un cretino, poichè la stringa $_SESSION['sessione'][3] veniva letta da un file di testo allora mancava alla fine lo \n, tutto qua. Grazie a chi ha risposto.

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.