Я просто хочу быстро сохранить массив, который я получаю из удаленного API, чтобы я мог общаться с ним на локальном хосте.
Так:
Здесь нет необходимости в эффективности и это не для фактического сайта, просто для того, чтобы сделать некоторые методы дезинфекции / форматирования и т. Д.
Есть функция, например store_array()
или restore_arrray()
?!
Лучший способ сделать это – сериализация JSON. Он читается человеком, и вы получите лучшую производительность (файл будет меньше и быстрее загружать / сохранять). Код очень прост. Всего две функции
Пример кода:
$arr1 = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); file_put_contents("array.json",json_encode($arr1)); # array.json => {"a":1,"b":2,"c":3,"d":4,"e":5} $arr2 = json_decode(file_get_contents('array.json'), true); $arr1 === $arr2 # => true
В этом примере вы можете написать свои собственные функции store_array и restore_array.
Для сравнения скорости см. Критерий изначально из предпочтительного метода хранения массивов PHP (json_encode vs serialize) .
Если вам не нужен файл дампа для чтения человеком, вы можете просто serialize()
массив.
хранение:
file_put_contents('yourfile.bin', serialize($array));
при получении:
$array = unserialize(file_get_contents('yourfile.bin'));
Использовать сериализацию и unserialize
// storing $file = '/tmp/out.data'; file_put_contents($file, serialize($mydata)); // $mydata is the response from your remote API // retreiving $var = unserialize(file_get_contents($file));
Или другой, хакерский путь:
var_export () делает именно то, что вы хотите, он будет принимать любую переменную и хранить ее в представлении, которое может считывать парсер PHP. Вы можете объединить его с file_put_contents, чтобы сохранить его на диске, и используйте file_get_contents и eval, чтобы прочитать его.
// storing $file = '/tmp/out.php'; file_put_contents($file, var_export($var, true)); // retrieving eval('$myvar = ' . file_get_contents($file) . ';');
Вы можете использовать сериализацию, чтобы превратить ее в строку для записи в файл, а также сопровождающий unserialize, чтобы вернуть ее в структуру массива.
Я бы предложил использовать независимую от языка структуру, например JSON. Это позволит вам загружать файлы на разных языках, кроме PHP, если это возможно позже. json_encode, чтобы сохранить его и json_decode ($str, true)
чтобы вернуть его.
Используйте сериализацию php:
file_put_contents("myFile",serialize($myArray));