2012-09-21 11 views
8

quiero evitar la escritura de base de datos y utilizar las constantes/matriz para los archivos de idiomas, etc.¿La mejor manera de escribir matrices en un archivo?

es decir:

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

y poder editarlo desde el back office. (entonces, en lugar de ir a buscarlo de la base de datos pobre, solo usaría $ lang ['hello'] ..).

¿qué estás sugiriendo para la mejor y más eficiente manera de sacarlo?

+0

¿Qué tal ['var_export()'] (http://uk.php.net/var_export)? – DCoder

+0

¿quieres saber qué es más eficiente, almacenar en BD o almacenar en matrices? –

+0

¿Qué tal json_decode? –

Respuesta

10

Definitivamente JSON

Para guardarlo:

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

para recuperarlo:

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

Tan simple como eso!

+3

Tenga en cuenta que si desea ahorrar espacio en disco (cuando utiliza matrices muy grandes, es decir) siempre puede almacenarlo en archivos como datos binarios –

5

Bueno, si insiste en poner los datos en archivos, puede considerar las funciones de php serialize() y unserialize() y luego poner los datos en archivos usando file_put_contents.

Ejemplo:

<?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

la forma más eficiente i encontró el siguiente aspecto:

construir su matriz en PHP de alguna manera y lo exportan a un archivo usando var_export()

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

entonces más adelante, donde sea que necesite estos datos, tire de esta manera

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

Me pregunto, ¿qué es más rápido ... serializar o exportar? –

+0

preferiría serializar sobre var_export. Un atacante podría poner código malicioso en el .php que contiene las variables y se ejecutará. – MarcDefiant

+0

@Mogria Bueno, si un atacante tiene acceso a los archivos de idioma, presumiblemente podría inyectar ese código en cualquier otro archivo también ...:) – deceze

3

Puede probar json_encode() y json_decode().

$save = json_encode($array);

contenidos de escritura de $ ahorran para presentar

Para cargar el uso lang:

$lang = file_get_contents('langfile'); 
$lang = json_decode($lang, true); 
Cuestiones relacionadas