파일로 인쇄 배열입니다.
나는 파일에 대한 배열을 인쇄하고 싶다.
나는 정확히 유사한 어떻게 이와 같은 코드처럼 보이게 보이는 파일에 적용하고 싶다.
print_r ($abc);
달러라고 가정하면 abc 배열입니다.
이것에 대한 하나의 라인 솔루션은 각각의 표정을 위해 정기적으로보다는 있다.
ps-나는 현재 있지만 내가로 가독성은 serialize된 배열을 사용하여 어려운 것이 파일 읽기 쉬운 만들고 싶어 serialize을 사용한다.
아무거 var_export거나 설정하 print_r 대신에 인쇄술의 출력 반환하려고 합니다.
$b = array (
'm' => 'monkey',
'foo' => 'bar',
'x' => array ('x', 'y', 'z'));
$results = print_r($b, true); // $results now contains output from print_r
그러면 절약할 수 있$results
file_put_contents.때를 파일에 쓰는 것 아니면 직접: 돌려주십시오.
file_put_contents('filename.txt', print_r($b, true));
그냥 사용하다print_r
;)은 설명서를 읽고:
의 출력을 사로잡고 싶다.
print_r()
, 사용한다return
매개 변수이다.이 변수가로 설정되어 있다.TRUE
,print_r()
밝히기보다는 그 정보를 프린트를 반환하다.
한 가지 가능성이 있습니다.
$fp = fopen('file.txt', 'w');
fwrite($fp, print_r($array, TRUE));
fclose($fp);
다음을 시도해 보십시오.
$h = fopen('filename.txt', 'r+');
fwrite($h, var_export($your_array, true));
file_put_contents($file, print_r($array, true), FILE_APPEND)
빠르고 심플하게 이 작업을 수행할 수 있습니다.
file_put_contents($filename, var_export($myArray, true));
이거 드셔보세요.$myArray
어레이로서
$filename = "mylog.txt";
$text = "";
foreach($myArray as $key => $value)
{
$text .= $key." : ".$value."\n";
}
$fh = fopen($filename, "w") or die("Could not open log file.");
fwrite($fh, $text) or die("Could not write file!");
fclose($fh);
그러나 op은 그대로 array를 파일에 쓸 필요가 있습니다.이 페이지를 통해 나중에 php를 사용하여 쉽게 읽을 수 있는 솔루션을 찾을 수 있습니다.
저는 json_encode를 사용하여 스스로 솔루션을 찾았습니다.다른 사람도 같은 것을 찾고 있는 사람은 다음과 같습니다.
file_put_contents('array.tmp', json_encode($array));
읽는 것보다
$array = file_get_contents('array.tmp');
$array = json_decode($array,true);
배열을 텍스트로 출력하기 위해 이 함수를 작성했습니다.
올바르게 포맷된 어레이를 출력합니다.
중요사항:
사용자 입력에 주의하십시오.
이 스크립트는 내부에서 사용하기 위해 작성되었습니다.
이 기능을 공용에 사용하는 경우 스크립트 주입을 방지하기 위해 몇 가지 데이터 검증을 추가해야 합니다.
이는 잘못된 증거가 아니므로 신뢰할 수 있는 데이터에만 사용해야 합니다.
다음 함수는 다음과 같이 출력합니다.
$var = array(
'primarykey' => array(
'test' => array(
'var' => array(
1 => 99,
2 => 500,
),
),
'abc' => 'd',
),
);
다음은 함수입니다(주의: 함수는 현재 oop 구현용으로 포맷되어 있습니다).
public function outArray($array, $lvl=0){
$sub = $lvl+1;
$return = "";
if($lvl==null){
$return = "\t\$var = array(\n";
}
foreach($array as $key => $mixed){
$key = trim($key);
if(!is_array($mixed)){
$mixed = trim($mixed);
}
if(empty($key) && empty($mixed)){continue;}
if(!is_numeric($key) && !empty($key)){
if($key == "[]"){
$key = null;
} else {
$key = "'".addslashes($key)."'";
}
}
if($mixed === null){
$mixed = 'null';
} elseif($mixed === false){
$mixed = 'false';
} elseif($mixed === true){
$mixed = 'true';
} elseif($mixed === ""){
$mixed = "''";
}
//CONVERT STRINGS 'true', 'false' and 'null' TO true, false and null
//uncomment if needed
//elseif(!is_numeric($mixed) && !is_array($mixed) && !empty($mixed)){
// if($mixed != 'false' && $mixed != 'true' && $mixed != 'null'){
// $mixed = "'".addslashes($mixed)."'";
// }
//}
if(is_array($mixed)){
if($key !== null){
$return .= "\t".str_repeat("\t", $sub)."$key => array(\n";
$return .= $this->outArray($mixed, $sub);
$return .= "\t".str_repeat("\t", $sub)."),\n";
} else {
$return .= "\t".str_repeat("\t", $sub)."array(\n";
$return .= $this->outArray($mixed, $sub);
$return .= "\t".str_repeat("\t", $sub)."),\n";
}
} else {
if($key !== null){
$return .= "\t".str_repeat("\t", $sub)."$key => $mixed,\n";
} else {
$return .= "\t".str_repeat("\t", $sub).$mixed.",\n";
}
}
}
if($lvl==null){
$return .= "\t);\n";
}
return $return;
}
또는 조금 전에 작성한 이 스크립트를 사용할 수도 있습니다.
이것은 배열의 일부를 복사하여 붙여넣기 좋습니다.
(시리얼라이즈된 출력으로는 거의 불가능합니다)
가장 깔끔한 기능은 아니지만 일을 완수할 수 있습니다.
이 출력은 다음과 같습니다.
$array['key']['key2'] = 'value';
$array['key']['key3'] = 'value2';
$array['x'] = 7;
$array['y']['z'] = 'abc';
사용자 입력에도 주의하십시오.여기 암호가 있습니다.
public static function prArray($array, $path=false, $top=true) {
$data = "";
$delimiter = "~~|~~";
$p = null;
if(is_array($array)){
foreach($array as $key => $a){
if(!is_array($a) || empty($a)){
if(is_array($a)){
$data .= $path."['{$key}'] = array();".$delimiter;
} else {
$data .= $path."['{$key}'] = \"".htmlentities(addslashes($a))."\";".$delimiter;
}
} else {
$data .= self::prArray($a, $path."['{$key}']", false);
}
}
}
if($top){
$return = "";
foreach(explode($delimiter, $data) as $value){
if(!empty($value)){
$return .= '$array'.$value."<br>";
}
};
echo $return;
}
return $data;
}
다음은 제가 지난 17시간 동안 배운 것과 비슷한 해결책을 찾으면서 제 문제를 해결한 것입니다.
자원:
http://php.net/manual/en/language.types.array.php
특정 코드:
// The following is okay, as it's inside a string. Constants are not looked for
// within strings, so no E_NOTICE occurs here
print "Hello $arr[fruit]"; // Hello apple
위에서 가져온 것은 $arr[fruit]가 "(큰따옴표) 안에 들어가 PHP에 의해 문자열로 받아들여질 수 있습니다.
두 번째 리소스는 위의 답변 중 하나에 있는 코드입니다.
file_put_contents($file, print_r($array, true), FILE_APPEND)
두 번째로 몰랐던 것은 FILE_APPEND입니다.
제가 하려고 했던 것은 파일에서 콘텐츠를 가져와 원하는 데이터를 편집하고 오래된 데이터를 삭제한 후 새로운 데이터로 파일을 업데이트하는 것입니다.
이제 업데이트된 데이터를 추가하기 전에 파일에서 데이터를 삭제하는 방법만 알면 됩니다.
기타 솔루션에 대해서:
var_export 또는 Print_r, Serialize 또는 Json을 시도했을 때 다른 사람에게 도움이 될 수 있도록 합니다.인코딩, 파일에 => 또는 ;, ' 또는 []와 같은 특수 문자가 있거나 오류가 발생했습니다.모든 오류를 기억하기 위해 너무 많은 것을 시도했다.따라서 다른 사용자가 다시 시도하면(나와는 다른 시나리오일 수 있음) 오류를 예상할 수 있습니다.
파일 읽기, 편집 및 업데이트 정보:
fgets() 함수를 사용하여 파일 배열을 변수($array)에 로드하고 unset($array[x])(여기서 x는 원하는 배열 번호, 1,2,3 등을 나타냅니다)를 사용하여 특정 배열을 삭제합니다.그런 다음 array_values()를 사용하여 배열을 다시 인덱싱하고 다른 변수로 로드한 후 while loop 이상의 솔루션을 사용하여 (특수 문자 없이) 배열을 타깃파일에 덤프합니다.
$x=0;
while ($x <= $lines-1) //$lines is count($array) i.e. number of lines in array $array
{
$txt= "$array[$x]";
file_put_contents("file.txt", $txt, FILE_APPEND);
$x++;
}
그냥 사용하다file_put_contents('file',$myarray);
file_put_put()로 지정합니다.
아래를 사용하여 보다 읽기 쉽게 동작할 수 있습니다.<pre>
<?php
ob_start();
echo '<pre>';
print_r($array);
$outputBuffer = ob_get_contents();
ob_end_flush();
file_put_contents('your file name', $outputBuffer);
?>
test.discloss를 실행합니다.discloss 。
<?php
return [
'my_key_1'=>'1111111',
'my_key_2'=>'2222222',
];
index.displaces를 표시합니다.
// Read array from file
$my_arr = include './test.php';
$my_arr["my_key_1"] = "3333333";
echo write_arr_to_file($my_arr, "./test.php");
/**
* @param array $arr <p>array</p>
* @param string $path <p>path to file</p>
* example :: "./test.php"
* @return bool <b>FALSE</b> occurred error
* more info: about "file_put_contents" https://www.php.net/manual/ru/function.file-put-contents.php
**/
function write_arr_to_file($arr, $path){
$data = "\n";
foreach ($arr as $key => $value) {
$data = $data." '".$key."'=>'".$value."',\n";
}
return file_put_contents($path, "<?php \nreturn [".$data."];");
}
echo "<pre>: ";
print_r($this->array_to_return_string($array));
protected function array_to_return_string($param) {
$str="[";
if($param){
foreach ($param as $key => $value) {
if(is_array($value) && $value){
$strx=$this->array_to_return_string($value);
$str.="'$key'=>$strx";
}else{
$str.="'$key'=>'$value',";
}
}
}
$str.="],";
return $str;
}
##먼저 파일을 파일에 저장할 수 있습니다.##
file_put_contents($target_directory. $filename, '<?php ' . PHP_EOL . ' $' . $array_name. '= ' . var_export($array, true) . ';');
그런 다음 이 파일을 포함하거나 file_get_content를 사용하여 읽을 수 있습니다.동일한 파일에 새 데이터를 추가할 경우
file_put_contents($file_name, ' ' . PHP_EOL . ' $' . $array_name. '= ' . var_export($array, true) . ';', FILE_APPEND);
이렇게 하면 이전 파일에 데이터를 추가하고 파일 내의 데이터를 보호하며 언제든지 호출할 수 있습니다.
언급URL : https://stackoverflow.com/questions/2628798/print-array-to-a-file
'programing' 카테고리의 다른 글
오류: gem 네이티브 확장을 빌드하지 못했습니다. mysql2를 설치하는 동안 오류가 발생했습니다. (0) | 2022.09.06 |
---|---|
Python에서 문자열이 반복되는지 어떻게 알 수 있습니까? (0) | 2022.09.06 |
NaN 유형이 '번호'를 반환하는 이유는 무엇입니까? (0) | 2022.09.05 |
문자열의 마지막 문자를 얻으려면 어떻게 해야 하나요? (0) | 2022.09.05 |
C# String과 동등한 Java.Format() 및 String.참가() (0) | 2022.09.05 |