2012-09-21 19 views
8

Voglio evitare di scrivere a DB e utilizzare le costanti/array per file della lingua eccIl modo migliore per scrivere array in un file?

cioè:

$lang = array (
    'hello' => 'hello world!' 
); 

ed essere in grado di modificarla dal back office. (quindi invece di recuperarlo dal povero db, vorrei solo usare $ lang ['hello'] ..).

cosa stai suggerendo per il modo migliore ed efficace per estrarlo?

+0

Cosa dire di ['var_export()'] (http://uk.php.net/var_export)? – DCoder

+0

vuoi sapere che cosa è più efficiente, archiviare in DB o archiviare in array? –

+0

Che ne dici di json_decode? –

risposta

10

Sicuramente JSON

Per salvarlo:

file_put_contents("my_array.json", json_encode($array)); 
.210

per tornare indietro:

$array = json_decode(file_get_contents("my_array.json")); 

Più semplice di così!

+3

Si noti che se si desidera risparmiare spazio su disco (quando si utilizzano array molto grandi, ad esempio), è sempre possibile archiviarlo in file come dati binari –

5

Beh, se ti ostini a mettere i dati in file, si potrebbe prendere in considerazione funzioni PHP serialize() e unserialize() e poi mettere i dati in file utilizzando file_put_contents.

Esempio:

<?php 
$somearray = array('fruit' => array('pear', 'apple', 'sony')); 
file_put_contents('somearray.dat', serialize($somearray)); 
$loaded = unserialize(file_get_contents('somearray.dat')); 

print_r($loaded); 
?> 
15

il modo più efficace ho trovato simile a questa:

costruire l'array in php in qualche modo ed esportarla in un file utilizzando var_export()

file_put_contents('/some/file/data.php', '<?php return '.var_export($data_array, true).";\n"); 

poi in seguito, ovunque tu abbia bisogno di questi dati, fai questo in questo modo

$data = include '/some/file/data.php'; 
+0

Mi chiedo, cos'è più veloce ... serializzare o esportare? –

+0

preferirei serializzare su var_export. Un utente malintenzionato può inserire codice dannoso nel file .php contenente le variabili e viene eseguito. – MarcDefiant

+0

@Mogria Bene, se un utente malintenzionato ha accesso ai file di lingua, presumibilmente potrebbe iniettare quel codice in qualsiasi altro file ...:) – deceze

3

Si può provare json_encode() e json_decode().

$save = json_encode($array);

contenuti di scrittura di $ salvare su file

Per caricare uso lang:

$lang = file_get_contents('langfile'); 
$lang = json_decode($lang, true); 
Problemi correlati