У меня проблема в моем коде. Мой код связан с обновлением / удалением строк в текстовом файле, так как текстовый файл найден. У меня проблемы с этим. Сначала я могу добавить новый текстовый файл, и вместе с ним я также могу обновить этот файл. Но это для 1 строки. Если я обновляю еще одну строку. Он просто добавит обновленное значение в конец текстового файла. Я хочу обновить это или удалить и вставить новый. Но я не знаю, как это сделать. Мой процесс обновления массива – array_replace (). Сначала мне нужно выяснить, найден ли идентификатор моих данных в текстовом файле. Если обнаружено, я просто обновляю / удалю и заменю существующие данные на новые обновленные данные. Если не найдено, просто добавьте только.
Вот мой код для этого.
$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('Ymd 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 на основе текстового файла, поэтому у меня проблемы с его отладкой.
Можете ли вы попробовать это,
<?php /****This is the BASE array from the existing textfile ****/ $data = unserialize(file_get_contents('addresses.txt')); $restaurant_id = '1519'; $new_lat_entry = '14.64823'; $new_long_entry = '121.45999'; /****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('Ymd H:i:s') ); $target = $data_add['restaurant_id']; $Count =count($data); $new_array =array(); for ($i = 0; $i < $Count; $i++) { $get_id = $data[$i]['restaurant_id']; //If ID is found - UPDATE $add_data = array( $i => $data_add ); if($get_id == $target){ $new_array = array_replace($data,$add_data); } } $serialize_data= serialize($new_array); print_r($serialize_data); $file_input_txt = fopen("addresses.txt","w+"); fwrite($file_input_txt, $serialize_data); fclose($file_input_txt); ?>