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

    Controllo su un array e su qualsiasi chiave/valore che esso contenga

    Ho un controllo che, a seconda dell'esistenza o meno di determinati parametri, assegna dei valori a un nuovo array, in questo modo:

    Codice PHP:
    if($condizione==true):

      
    $arr['nome']='Mario';
      
    $arr['cognome']='Rossi';
      
    $arr['città']='Milano';

    else 
    $arr='';

    endif; 


    Successivamente i suddetti valori vengono stampati come campi precompilati in un form:

    Codice PHP:
    <form>
    <input type="text" value="<?=$arr['nome']?>" />
    <input type="text" value="<?=$arr['cognome']?>" />
    <input type="text" value="<?=$arr['città']?>" />
    </form>


    Il mio problema nasce nel caso di un nuovo utente, ovvero nel momento in cui il form viene caricato ma le chiavi/valori di $arr non sono state assegnate, infatti compaiono molti notice e warning nonostante la dichiarazione di partenza.

    Nel controllo iniziale, ovvero in else $arr=''; c'è modo di specificare che non soltanto $arr deve essere '', ma anche qualsiasi chiave o valore in esso dichiarato?


    In altre parole, vorrei ottenere questo risultato:

    Codice PHP:
    $arr['nome']='';
    $arr['cognome']='';
    $arr['città']=''

    ...senza tuttavia dover specificare le singole variabili una ad una.

    Grazie in anticipo
    Ultima modifica di mahamatt; 19-01-2016 a 15:43
    «Prendo rifugio nel grande BOH»

  2. #2
    Codice PHP:
    if($condizione==true):
      
    $arr['nome']='Mario';
      
    $arr['cognome']='Rossi';
      
    $arr['città']='Milano';
    else
      
    $arr['nome']='';
      
    $arr['cognome']='';
      
    $arr['città']='';
    endif; 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Come dicevo alla fine del post, non posso specificare le singole variabili manualmente una ad una (sono semplicemente troppe).
    Mi servirebbe una regola generale che azzerasse tutto il contenuto dell'array.
    Esiste qualcosa del genere?
    «Prendo rifugio nel grande BOH»

  4. #4
    Quote Originariamente inviata da mahamatt Visualizza il messaggio
    Come dicevo alla fine del post, non posso specificare le singole variabili manualmente una ad una (sono semplicemente troppe).
    Mi servirebbe una regola generale che azzerasse tutto il contenuto dell'array.
    Esiste qualcosa del genere?
    Ho risposto prima di poter leggere l'ultima parte del tuo post. La soluzione potrebbe essere quella di verificare, in fase di visualizzazione, l'esistenza dell'indice con la funzione isset():

    Codice PHP:
    <form>
    <input type="text" value="<?php echo isset($arr['nome']) ? $arr['nome'] : '' ?>" />
    <input type="text" value="<?php echo isset($arr['cognome']) ? $arr['cognome'] : '' ?>" />
    <input type="text" value="<?php echo isset($arr['citta']) ? $arr['citta'] : '' ?>" />
    </form>
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Quote Originariamente inviata da mahamatt Visualizza il messaggio
    Il mio problema nasce nel caso di un nuovo utente, ovvero nel momento in cui il form viene caricato ma le chiavi/valori di $arr non sono state assegnate, infatti compaiono molti notice e warning nonostante la dichiarazione di partenza.
    Usa la chiocciola per indicare che una variabile potrebbe non essere definita
    Codice PHP:
    <form>
    <input type="text" value="<?=@$arr['nome']?>" />
    <input type="text" value="<?=@$arr['cognome']?>" />
    <input type="text" value="<?=@$arr['città']?>" />
    </form>


    P.S.
    Codice PHP:
    <?=$var?>
    Questa forma contratta, anche se comoda, è sconsigliabile.

  6. #6
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Usa la chiocciola per indicare che una variabile potrebbe non essere definita
    Codice PHP:
    <form>
    <input type="text" value="<?=@$arr['nome']?>" />
    <input type="text" value="<?=@$arr['cognome']?>" />
    <input type="text" value="<?=@$arr['città']?>" />
    </form>


    P.S.
    Codice PHP:
    <?=$var?>
    Questa forma contratta, anche se comoda, è sconsigliabile.
    Non gliel'ho suggerito in quanto secondo il mio parere non è mai bene silenziare le eccezioni, comunque è una soluzione.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Non puoi avere un array che contiene le chiavi ?

    $ch[0] = 'nome';
    $ch[1] = 'cognome';
    ...
    $ch[10] = 'paese';
    ...
    for ($i=0;$i<count($ch);$i++) {?>
    <input type="text" value="<?php echo isset($arr[$ch[$i]]) ? $arr[$ch[$i]]] : '' ?>" />
    }
    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

  8. #8
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Non gliel'ho suggerito in quanto secondo il mio parere non è mai bene silenziare le eccezioni, comunque è una soluzione.
    Essendo applicato ad un singolo riferimento alla variabile, è un silenziamento molto circoscritto...

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.