|
파일로 로그 작업을 하려던중
배열값을 파일로 저장하는데서 막혀버렸다.
이를테면 array('a'=>'A', 'b',=>'B'); 이런식의 배열을 어떠한 액션을 통해 파일로 저장을 할때.
파일에는 "Array" 라고 저장이 된다는...
$a = array('a'=>'A', 'b',=>'B');
배열형태의 경우 그 배열값을
$buff="
foreach($a as $key=>$val){
$buff .= '$'.$key.'='............ ..
}
이런식으로 buff에 넣어야하기때문에 매우 번거롭다.
stdClass가 포함된 경우에는 그것까지 고려해야하기 때문에 난감하다.
이럴때는 serialize/unserialize나 json_encode/json_decode와 같이 암호화/복호화 방식을 사용하여 INPUT/OUTPUT을 수행하는 것이 좋다.
예1.
To save it :
file_put_contents("my_array.json", json_encode($array));
To get it back :
$array = json_decode(file_get_contents("my_array.json"));
예2.
이 경우에는 오직 array()형태만 가능하다.(stdClass는 안됨)
그래도 serialize보다는 var_exort가 속도면에서는 더 나으므로 object형태가 아니면 이방법을 사용하도록 하자.
$fp = fopen('file.txt', 'w');
if(is_array($array)) {
fwrite($fp, print_r($array, TRUE)); //or use var_export()
}
fclose($fp);
print_r() 의 출력을 잡으려면, return 인수를 TRUE 로 사용하십시오.
print_r() 은 출력(기본값)하는 대신, 출력을 반환합니다.
Example #2 return 인수 예제
<?php
$b = array ( 'm' => 'monkey' , 'foo' => 'bar' , 'x' => array ( 'x' , 'y' , 'z' ));
$results = print_r ( $b , true ); // $results가 print_r의 출력을 가집니다.
?>
|