내 코드에 문제가 있습니다. 내 코드는 텍스트 파일이 발견되면 텍스트 파일에서 행을 업데이트/삭제하는 것입니다. 나는 그것에 문제가있다. 처음에는 새 텍스트 파일을 추가 할 수 있으며 함께이 파일을 업데이트 할 수 있습니다. 하지만 그것은 1 행입니다. 다른 행을 업데이트하는 경우. 텍스트 파일의 끝에 업데이트 된 값을 추가합니다. 내가 원하는 것은 이것을 업데이트하거나 삭제하고 새로운 것을 삽입하는 것입니다. 하지만 어떻게해야할지 모르겠다. 배열을 업데이트하는 과정은 array_replace()입니다. 먼저 내 데이터의 ID가 텍스트 파일에 있는지 알아야합니다. 찾으면 간단하게 업데이트/삭제하고 기존 데이터를 새로운 업데이트 된 데이터로 바꿉니다. 발견되지 않으면 추가하십시오.PHP를 사용하여 조건을 사용하여 텍스트 파일을 작성하는 방법
여기 내 코드가 있습니다.
$restaurant_id = $post_data['company_id'];
$new_lat_entry = $post_data['new_lat'];
$new_long_entry = $post_data['new_long'];
/****Here's my new updated array ****/
$data_add = array(
'restaurant_id' => $restaurant_id,
'new_lat' => $new_lat_entry,
'new_long' => $new_long_entry,
'date_updated' => date('Y-m-d H:i:s')
);
/****This is the BASE array from the existing textfile ****/
$data = unserialize(file_get_contents('addresses.txt'));
$target = $data_add['restaurant_id'];
for ($i = 0; $i < count($data); $i++) {
$get_id = $data[$i]['restaurant_id'];
if($get_id == $target){
//If ID is found - UPDATE
$add_data = array();
$add_data = array(
$i => $data_add
);
$new_array = array();
$new_array = array_replace($data,$add_data);
$serialize_data = serialize($new_array);
$file_input_txt = fopen("addresses.txt","w+");
fwrite($file_input_txt,$serialize_data);
fclose($file_input_txt);
}else{
$new_array = array(
$i => $data_add
);
$serialize_data = serialize($new_array);
$file_input_txt = fopen("addresses.txt","w+");
fwrite($file_input_txt,$serialize_data);
fclose($file_input_txt);
}
}
내 텍스트 파일의 출력은 직렬화 된 형식입니다.
a:1:{i:0;a:4:{s:13:"restaurant_id";s:4:"1519";s:7:"new_lat";s:8:"14.63823";s:8:"new_long";s:9:"121.02999";s:12:"date_updated";s:19:"2013-11-15 12:42:59";}}
저도 모두 도와주세요. 이제 마감일이 있습니다. 그리고 나는 그것에 매달렸다. 이것은 내가이 문제를 디버깅을 데 왜 텍스트 파일을 기반으로 CRUD를 생성하고 처음 :-(.
그래서 전체 파일이있을 것입니다 삭제 되었습니까? 텍스트 파일에서 한 줄을 삭제하려면 어떻게해야합니까? – Jerielle
그래도 그 과정이면 모든 배열을 호출하여 변수에 할당해야합니다. 그런 다음 기존 배열에 새 배열을 추가해야합니다. 일련의 배열과 다음에 오래된 텍스트 파일을 삭제하고 새 배열을 텍스트 파일에 추가합니까? – Jerielle
예, 올바르다 –