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

    [freephp] riga dal testo dei corsi..

    Ciao a tutti!

    mi servirebbe il commento di questa riga...

    codice:
    $pagina_corrente = (!$_GET['page']) ? 1 : (int)$_GET['page'];
    in questo modo mi da un notice: index page non è definita...


    ??
    io ho fatto cosi:
    codice:
    if(!isset(&_GET['page'])) {
       $pagina_corrente = 1;
       } else {
          $pagina_corrente = $_GET['page'];
          }
    e tutto funziona senza notice...
    ma non dovrebbe funzionare anche la riga sopra?

    potreste commentarmela?

    Grazie mille!!
    Francesco
    Ciao!

  2. #2
    Utente di HTML.it L'avatar di M4rko
    Registrato dal
    Dec 2000
    Messaggi
    619
    Quello che hai scritto tu si può riassumere così:
    codice:
    $pagina_corrente = !isset($_GET['page']) ? 1 : (int)$_GET['page'];
    Sintatticamente la stringa di prima era "quasi" giusta, nel senso che, all'interno di una condizione, una variabile viene interpretata come "true" se è valorizzata e se ha valori diversi da false, 0 o null. Quindi in fin dei conti quella stringa funzionava.
    In realtà la scorrettezza era dovuta al fatto che l'accesso senza controlli ad una variabile non valorizzata va a provocare un notice, che in questo caso è legato alla mancanza di indice "page" nell'array $_GET. Per evitare questi problemi, meglio usare sempre controlli con isset o empty, a seconda delle necessità (come avevi giustamente fatto, anche se con sintassi diversa)
    Tutti hanno bisogno di credere in qualcosa.
    Io credo che mi farò un'altra birra.


  3. #3
    e tra le due righe che differenza c'è?

    codice:
    $pagina_corrente = !isset($_GET['page']) ? 1 : (int)$_GET['page'];
    
    $pagina_corrente = (!$_GET['page']) ? 1 : (int)$_GET['page'];
    non per sembrare noioso, ma mi piace capire il modo in cui le cose funzionano!

    Ciao!

  4. #4
    Utente di HTML.it L'avatar di M4rko
    Registrato dal
    Dec 2000
    Messaggi
    619
    isset() è un costrutto che restituisce true/false verificando se la variabile è valorizzata o meno (il ! davanti indica la negazione)

    Usare una variabile direttamente dentro ad un controllo (tipo if o while, ma anche con l'operatore ternario come in questo caso), visto che il tipo di dato viene interpretato dinamicamente come "true" quando è valorizzato e quando è diverso da false, 0 o null, è in sostanza la stessa cosa.
    La differenza è data dal fatto che mentre isset() è pensato apposta per vedere se una variabile esiste o meno, nel secondo caso si tenta invece di accedere direttamente ad una variabile che non c'è, causando quel tipo di notice. Visto che comunque l'assenza di valore viene interpretato poi come un "false", il comportamento di quei due codici è uguale, notice a parte.

    Dai un'occhiata qua:
    www.php.net/types
    http://it2.php.net/manual/en/languag...e-juggling.php
    Tutti hanno bisogno di credere in qualcosa.
    Io credo che mi farò un'altra birra.


  5. #5
    Originariamente inviato da fmortara
    e tra le due righe che differenza c'è?

    codice:
    $pagina_corrente = !isset($_GET['page']) ? 1 : (int)$_GET['page'];
    
    $pagina_corrente = (!$_GET['page']) ? 1 : (int)$_GET['page'];
    non per sembrare noioso, ma mi piace capire il modo in cui le cose funzionano!

    scusa...
    mi puoi commentare il codice??
    tipo:
    !isset= controlla se la variabile esiste, il ! inverte il risultato...

    eccc.....
    cosi provo a capirci qualcosa...

    Ciao!

  6. #6
    codice:
    $pagina_corrente = !isset($_GET['page']) ? 1 : (int)$_GET['page'];
    $pagina_corrente = (!$_GET['page']) ? 1 : (int)$_GET['page'];

    nessuno mi spiega la differenza??
    Ciao!

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.