2017-01-25 1 views
0

파일에 배열이 있습니다.이 값을 변경하고 원본 파일과 같은 파일에 다시 써야합니다. 배열과외부 파일의 배열에있는 키를 바꾸고 다시 쓰십시오.

내 파일 :

return [ 
    'modules' => [ 
     'test-module1'  => 1, 
     'test-module2'  => 1, 
    ], 
]; 

내가 값 (숫자)를 교체하고 (가능 때) PHP의 파일에이 스타일처럼 다시 작성합니다.

예. test-module1을 사용 중지하고 0 키를 설정하고 싶습니다. 가장 좋은 방법은 무엇입니까? 이번에는 계획이 없습니다.

편집 : 키를 변경하는 방법을 알고 있지만 파일에 다시 쓰는 방법을 모르겠습니다.

+3

데이터 파일 형식을 지정하는 것이 좋지 않은 것처럼 보입니다. JSON 또는'serialize()'형식을 사용하는 것이 더 낫습니다. – Barmar

+0

'var_export' 함수 사용 –

+1

당신은 이것을 원하지 않습니다. 당신은 당신이하고있는 일에 대해 조금 생각하고 그것을하는 더 좋은 방법을 생각해 내고 싶습니다. @Barmar가 제안한 – RiggsFolly

답변

2

JSON으로이 작업을 수행합니다. 그러나이 형식에 구속되어 있으면 배열을 반환합니다. 다음을 포함, 수정 및 작성 :

$result = include('path/to/file.php'); 
$result['modules']['test-module1'] = 0; 

그러나 형식을 얻는 것은 어려울 것입니다. 당신은 var_export()와 다른 배열 형식을 얻을 것입니다 :

file_put_contents('path/to/file.php', 'return ' . var_export($result, true) . ';');  

수익률 :

return array (
    'modules' => 
    array (
    'test-module1' => 0, 
    'test-module2' => 1, 
), 
); 

그러나, json_encode($result, JSON_PRETTY_PRINT);이 산출됩니다

{ 
    "modules": { 
     "test-module1": 0, 
     "test-module2": 1 
    } 
} 

그런 다음 당신이 거기에서 file_get_contents()json_decode()를 사용할 수 있습니다. return로 갈 필요가 없습니다.

+0

아, 아닐 수도 있습니다. 포함 결과가 true 또는 false입니다. – RiggsFolly

+0

값을 반환 할 때가 아닙니다. http://php.net/manual/en/function.include.php 예 # 5 – AbraCadaver

+0

오, 참 으세요, 테스트 실수입니다. 바보 같은 빌리. – RiggsFolly

관련 문제