programing

PHP로 나중에 배열로 액세스하려면 배열을 파일에 저장하려면 어떻게 해야 합니까?

jooyons 2023. 10. 2. 15:00
반응형

PHP로 나중에 배열로 액세스하려면 배열을 파일에 저장하려면 어떻게 해야 합니까?

원격 API에서 가져온 배열을 로컬 호스트에서 처리할 수 있도록 빠르게 저장하고 싶습니다.

그래서:

  1. 저는 현재 어레이를 가지고 있습니다.
  2. API에서 어레이를 가져올 필요 없이 사용할 수 있도록 하고 싶습니다.

여기서는 효율성 등에 대한 필요가 없습니다. 이것은 단지 몇 가지 위생/포맷 방법 등을 만들기 위한 실제 사이트가 아닙니다.

또는?와 같은 기능이 있습니까?!

가장 좋은 방법은 JSON serializing입니다.사용자가 읽을 수 있고 성능이 향상됩니다(파일 크기가 작고 로드/저장 속도가 빠름).코드는 아주 쉽습니다.단 두가지 기능

예제 코드:

$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)을 저장할 기본 방법벤치마크를 참조하십시오.

덤프 파일을 사람이 읽을 수 있게 할 필요가 없다면 배열만 사용해도 됩니다.

저장:

file_put_contents('yourfile.bin', serialize($array));

검색 중:

$array = unserialize(file_get_contents('yourfile.bin'));

serialize(직렬화) 및 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_contentsevaluate를 사용하여 다시 읽을 수 있습니다.

// storing
$file = '/tmp/out.php';
file_put_contents($file, var_export($var, true));

// retrieving
eval('$myvar = ' . file_get_contents($file) . ';');

여기에 언급되지 않은 또 다른 빠른 방법:

그런 식으로 머리글을 추가합니다.<?php시작 태그, 변수 이름\$my_array =탈옥하여\$바닥글과?>끝표

이제 사용할 수 있습니다.include()다른 유효한 php 스크립트와 마찬가지로.

<?php
  // storing
  $file = '/tmp/out.php';
  $var = ['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5];

  file_put_contents($file,
    "<?php\n\$my_array = "
      .var_export($var, true)
    .";\n?>"
  );

  // retrieving as included script
  include($file);

  //testing
  print_r($my_array);
?>

php는 이렇게 보일 겁니다

<?php
  $my_array = array (
    'a'=>1,
    'b'=>2,
    'c'=>3,
    'd'=>4,
    'e'=>5
  );
?>

serialize를 사용하여 파일에 쓸 문자열로 만들고, 그에 수반되는 unserialize를 사용하여 배열 구조로 되돌릴 수 있습니다.

하지만 JSON과 같은 언어 독립적인 구조를 사용하는 것을 제안합니다.이것은 나중에 기회가 있을 경우를 대비하여 PHP와는 다른 언어를 사용하여 파일을 로드할 수 있습니다. json_encode로 저장하고 json_decode($str, true)돌려주기 위해서 입니다.

php 사용에 대해 말하자면, 성능을 위해 모든 것을 인코딩하고 디코딩하는 것을 피하고 배열을 저장합니다:

file_put_contents('dic.php', "<?php return " . var_export($dic, true) . ";\n");

그리고 정상적으로 전화를 합니다.

$dic = include "dic.php";

참조 : https://php.net/include

php의 serialze 사용:

file_put_contents("myFile",serialize($myArray));

이것만 할 수 있는 작은 라이브러리(~2KB; <100행)를 만들었습니다: varDx

데이터를 쓰고, 읽고, 수정하고, 확인하고, 삭제하는 기능이 있습니다.직렬화를 구현하므로 모든 데이터 유형을 지원합니다.

사용 방법은 다음과 같습니다.

<?php
require 'varDx.php';
$dx = new \varDx\cDX; //create an object
$dx->def('file.dat'); //define data file

$val1 = "this is a string";
$dx->write('data1', $val1); //writes key to file
echo $dx->read('data1'); //returns key value from file

특정한 경우:

$array1 = array(
    "foo" => "bar",
    "bar" => "foo",
);

//writing the array to file
$dx->write('myarray', $array1);

//reading array from file
$array2 = $dx->read('myarray')

//modifying array in file after making changes
$dx->write('myarray', $array2);

언급URL : https://stackoverflow.com/questions/2662268/how-do-i-store-an-array-in-a-file-to-access-as-an-array-later-with-php

반응형