我的代码有问题。我的代码都是关于更新/删除文本文件中的行,例如找到文本文件。我遇到了麻烦。起初我可以添加一个新的文本文件,然后我还可以更新这个文件。但它适用于 1 行。如果我更新另一行。它只会在文本文件的末尾附加更新的值。我想要的是更新这个或删除并插入新的。但我不知道怎么做。我更新数组的过程是array_replace()。首先,我需要确定是否在文本文件中找到了我的数据 ID。如果找到,我将简单地更新/删除并将现有数据替换为我的新更新数据。如果没有找到,只需添加。
这是我的代码。
$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,这就是我在调试它时遇到问题的原因。