Sia la documentazione è in errore o la funzione è in errore. Onestamente, non posso per nessun motivo capire perché l'estratto debba essere passato un array per riferimento, ma qualcuno ha indicato il flag di tipo EXTR_REFS.
Guardando la mia versione locale del codice PHP (5.3.2), posso vedere che la definizione della funzione per extract()
non indica passaggio per riferimento.
function extract (array $var_array, $extract_type = null, $prefix = null)
Guardando sort()
la definizione Mostrano passaggio per riferimento:
function sort (array &$array, $sort_flags = null)
Questo è il motivo per cui non ho ricevuto l'errore rigoroso su extract()
e lo vedo su sort()
.
Suppongo che la documentazione su php.net non sia aggiornata o semplicemente errata. extract()
è un vecchio cucciolo ... Non sono sicuro che nel lontano giorno la definizione della funzione indicava effettivamente &$var_array
oppure no.
L'altra opzione è che la definizione della funzione è incasinata in qualche punto e la documentazione indica correttamente come dovrebbe essere, in base al fatto che esiste un flag di tipo extra di EXTR_REFS potrebbe essere il caso (questa costante esiste ancora).
Si prega di considerare questo un bug e segnalarlo. Un bug correlato potrebbe essere: https://bugs.php.net/bug.php?id=55222 Una domanda correlata potrebbe essere: http://stackoverflow.com/q/6726589/367456 – hakre
beh, in realtà non mi interessa a questo proposito, ma mostra che il manuale non può essere considerato attendibile: P cosa succede se 'die()' ci uccide invece della sceneggiatura? :( – thelolcat
lolcatly, prenditela comoda.Non puoi sempre fidarti dei documenti.Qualunque trusting significhi qui btw, immagino che questo piccolo difetto non ti stia uccidendo, giusto? E se non ti interessa, allora per favore non chiedere – hakre