Intereting Posts
distinct () с pagination () в laravel 5.2 не работает Можно ли использовать stdClass как массив? Включает () / require () с «побочными эффектами» плохую практику? PHP-код, чтобы определить, был ли пользователь 301 перенаправлен на мой сайт как перенаправить STDOUT на файл в PHP? mysql_num_fields (): предоставленный аргумент не является допустимым ресурсом результата MySQL Оберните латинские символы с помощью тега span Разрешить проверку только в том случае, если продукт обязательной категории находится в корзине Являются ли константы такими же злыми, как глобальные переменные и одиночные? Запрос AJAX POST через jQuery и FormData – $ _POST пуст на PHP Завершение кода для частных / защищенных переменных-членов при использовании магии __get () Как вызвать компонент внутри компонента Кто-нибудь знает regexp, чтобы извлечь только идентификатор видео из Vimeo embed, используя php? Данные не отправляются в базу данных SQL с использованием MySQLi и PHP Как работает маршрутизация MVC?

Как сохранить массив в файле для доступа к массиву позже с PHP?

Я просто хочу быстро сохранить массив, который я получаю из удаленного API, чтобы я мог общаться с ним на локальном хосте.

Так:

  1. В настоящее время у меня есть массив.
  2. Я хочу, чтобы люди использовали массив без необходимости получать его из API.

Здесь нет необходимости в эффективности и это не для фактического сайта, просто для того, чтобы сделать некоторые методы дезинфекции / форматирования и т. Д.

Есть функция, например store_array() или restore_arrray() ?!

Лучший способ сделать это – сериализация JSON. Он читается человеком, и вы получите лучшую производительность (файл будет меньше и быстрее загружать / сохранять). Код очень прост. Всего две функции

  • json_encode
  • json_decode

Пример кода:

 $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));