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

    [PHP] caratteri ammessi negli indici di array

    Ciao,
    in rete non sono riuscito a trovare qualche risposta per questo quesito.
    http://it.php.net/manual/it/ref.array.php

    Quali sono i caratteri ammessi per gli indici (associativi) degli array in PHP?
    Suppongo che non siano solo quelli ammessi per i nomi delle variabili _, [0-9] e [a-zA-Z] perché ho provato con il punto e vengono regolarmente scritti e letti.

    In alcuni casi mi è utile usare il nome del file in cui si trova lo script come indice di un array di sessione per automatizzare alcuni processi di aggiornamento senza preoccuparmi di eventuali rinominazioni.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  2. #2
    L'indice associativo di un array è una stringa, quindi può contenere tutto quello che una stringa può contenere (= tutto).
    Se qualcuno avesse potuto corroborare la mia tesi sarebbe stato meglio, comunque ho fatto molte prove con i caratteri più disparati tipo
    Codice PHP:
    $a['.%&/\!0?^'] = "Sono io!";
    echo 
    $a['.%&/\!0?^']; 
    e viene sempre letto tutto regolarmente.
    Ahoj

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

  3. #3
    http://it.php.net/manual/it/language.types.array.php

    gli indici di una array possono essere associativi ('stringhe' qualsiasi) o numerici (interi)

    fa eccezione $_SESSION che accetta solo indici con lo stesso limite sintattico dato ai nomi delle variabili.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Grazie Piero.

    Ho provato su $_SESSION con vari indici e vale la stessa cosa che hai detto per altri array: accetta senza fare una piega indici associativi costituiti da qualsiasi stringa come quella dell'esempio sopra (con error_reporting settato a E_ALL, in locale con PHP ver 5.2.1, e su server con PHP ver 4.3.9).

    Quel limite sintattico sembra non valga anche per $_SESSION.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  5. #5
    Originariamente inviato da emanueledg
    Grazie Piero.

    Ho provato su $_SESSION con vari indici e vale la stessa cosa che hai detto per altri array: accetta senza fare una piega indici associativi costituiti da qualsiasi stringa come quella dell'esempio sopra (con error_reporting settato a E_ALL, in locale con PHP ver 5.2.1, e su server con PHP ver 4.3.9).

    Quel limite sintattico sembra non valga anche per $_SESSION.
    $_SESSION e' particolare. Sostituisce la "registrazione in sessione" delle variabili come era uso tempo fa con register_globals in ON. In pratica gestisce i suoi indici come se fossero delle variabili autonome e, forse per qualche compatibilita' che non ti saprei dire, restringe la possibilita' dei nomi indice ai valori previsti per i nomi delle variabili e labels in genere del php.

    http://it.php.net/manual/it/language.variables.php

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Ok.
    Per quanto riguarda REGISTER_GLOBALS ad ON (vecchia usanza) sapevo che i vettori globali definivano automaticamente le variabili con i nomi degli indici associativi, per esempio $_POST['user'] definisce automaticamente la variabile $user

    Diciamo allora che forse nel caso dei miei test il problema non si è verificato proprio perché in quelle versioni REGISTER_GLOBALS è impostato ad OFF, altrimenti avrei avuto sicuramente un warning a schermo del tipo "invalid variable name" o simile.

    Per quanto riguarad i caratteri ammessi nei nomi delle variabili devo dire che proprio non sapevo l'estensione ai caratteri ASCII 127-255 oltre all'alfabeto inglese... (Mi sembrava di ricordare che la guida PHP di base di Gianluca Gillini qui su html.it parlava di soli caratteri inglesi ammessi ma mi sbagliavo, non specifica quali caratteri: http://php.html.it/guide/lezione/2642/le-variabili/ ).

    Ho provato a visualizzare i caratteri ammessi:
    Codice PHP:
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf8" />
    </head>
    <body>
    <h1>USA-ASCII allowed chars in PHP variables name</h1>
    <?php
    for ($i 127$i 256$i++) {
        echo 
    "<div>&#x$i;</div>\n";
    }
    ?>
    </body>
    </html>
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.