2012-09-21 8 views
8

chcę uniknąć pisania do DB i używać stałych/tablicy plików lang itpNajlepszy sposób zapisywania tablic do pliku?

tj:

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

i móc edytować go z back office. (wtedy zamiast pobierania z biednego db, po prostu użyłbym $ Lang ['hello'] ..).

co sugerujesz, aby uzyskać najlepszy i najskuteczniejszy sposób jego wydobycia?

+0

Co powiesz na ['var_export()'] (http://uk.php.net/var_export)? – DCoder

+0

Czy chcesz wiedzieć, co jest bardziej wydajne, przechowywanie w DB lub przechowywanie w tablicach? –

+0

Co powiesz na json_decode? –

Odpowiedz

10

Zdecydowanie JSON

Aby ją zapisać:

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

Aby odzyskać:

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

To takie proste!

+3

Należy pamiętać, że jeśli chcesz zaoszczędzić miejsce na dysku (przy użyciu bardzo dużych tablic tj.), Możesz zawsze przechowywać je w plikach jako dane binarne –

5

Cóż, jeśli chcesz umieścić dane w plikach, możesz rozważyć funkcje php: serialize() i unserialize(), a następnie umieścić dane w plikach przy użyciu file_put_contents.

Przykład:

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

najskuteczniejszym sposobem znalazłem wygląda następująco:

budować swoją tablicę w php jakoś i wyeksportować go do pliku przy użyciu var_export()

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

następnie później, wszędzie tam, gdzie potrzebujesz tych danych, przeciągnij go w ten sposób, tak jak to

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

Zastanawiam się, co jest szybciej .. serializować lub eksportować? –

+0

Wolałbym serializować ponad var_export. Osoba atakująca może umieścić złośliwy kod w .php zawierającej zmienne i zostanie wykonana. – MarcDefiant

+0

@Mogria Cóż, jeśli atakujący ma dostęp do plików językowych, prawdopodobnie mógłby również wprowadzić ten kod do dowolnego innego pliku ...:) – deceze

3

Możesz spróbować json_encode() i json_decode().

$save = json_encode($array);

zapisu zawartość $ zapisać do pliku

Aby załadować lang zastosowanie:

$lang = file_get_contents('langfile'); 
$lang = json_decode($lang, true); 
Powiązane problemy