PHP로 나중에 배열로 액세스하려면 배열을 파일에 저장하려면 어떻게 해야 합니까?
원격 API에서 가져온 배열을 로컬 호스트에서 처리할 수 있도록 빠르게 저장하고 싶습니다.
그래서:
- 저는 현재 어레이를 가지고 있습니다.
- 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'));
// 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 및 evaluate를 사용하여 다시 읽을 수 있습니다.
// 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
'programing' 카테고리의 다른 글
| jQuery - 아래로 스크롤할 때 축소되는 sticky 헤더 (0) | 2023.10.07 |
|---|---|
| PHP - 제거PHP - 제거문자열에서 따옴표로 옮기다문자열에서 따옴표로 옮기다 (0) | 2023.10.07 |
| 컴파일 시 경로와 접미사 없이 소스 파일 이름을 추출하는 방법은? (0) | 2023.10.02 |
| 사용자를 작성하고 Maria의 특정 데이터베이스에 대한 액세스를 취소합니다.DB (0) | 2023.10.02 |
| 알 수 없는 NullPointerJdbcOdbcDriver.finalize() 행의 예외: 96 (0) | 2023.10.02 |