如何使用PHP编写带条件的文本文件
我的代码有问题。我的代码是关于在找到文本文件时更新/删除文本文件中的行。我有点麻烦。首先,我可以添加一个新的文本文件,同时我也可以更新这个文件。但这是一排。如果我更新另一行。它只会将更新后的值附加到文本文件的末尾。我想要的是更新这个或删除并插入新的。但我不知道怎么做。我更新数组的过程是array_replace()。首先,我需要确定我的数据的ID是否在文本文件中找到。如果发现,我将简单地更新/删除并将现有数据替换为新的更新数据。如果找不到,只需添加 这是我的密码如何使用PHP编写带条件的文本文件,php,arrays,Php,Arrays,我的代码有问题。我的代码是关于在找到文本文件时更新/删除文本文件中的行。我有点麻烦。首先,我可以添加一个新的文本文件,同时我也可以更新这个文件。但这是一排。如果我更新另一行。它只会将更新后的值附加到文本文件的末尾。我想要的是更新这个或删除并插入新的。但我不知道怎么做。我更新数组的过程是array_replace()。首先,我需要确定我的数据的ID是否在文本文件中找到。如果发现,我将简单地更新/删除并将现有数据替换为新的更新数据。如果找不到,只需添加 这是我的密码 $restaur
$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);
}
}
就这些了,请帮帮我。我现在有最后期限了。我被它困住了-(这是我第一次基于文本文件创建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('Y-m-d 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);
?>
你能试试这个吗
<?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('Y-m-d 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);
?>
那么整个文件都将被删除?如果我想从文本文件中删除一行呢?我也可以使用它吗?如果是这样的话,首先我需要调用我的所有数组并将其分配到一个变量中。然后将我的新数组附加到现有的数组序列中,然后是删除旧的文本文件并将我的新数组添加到文本文件中?好的,但是我有一个问题。正如我在问题中所说的。我在更新数组时遇到问题。这意味着如果我有一个现有记录,我需要更新此记录。它将附加到新行,而不仅仅是更新它。首先,它工作正常。它可以更新和添加。但是,如果我尝试更新另一个ID或行,则更新后的值为appending在文本文件的末尾。它不会更新行。你能发布你的addresss.txt
文件吗?这是我的问题。请看下面。所以整个文件都会被删除?如果我想从文本文件中删除一行呢?我也可以使用它吗?所以如果这是一个过程,首先我需要调用我所有的数组并将其分配到一个变量中。然后追加我的ne将数组添加到现有的数组系列中,然后删除旧的文本文件并将我的新数组添加到文本文件中?好的,但我有一个问题。正如我在问题中所说的。我在更新数组时遇到了问题。这意味着如果我有一个现有记录,我需要更新它。它将附加到新行,而不仅仅是更新我的记录t、 一开始,它是有效的。它可以更新和添加。但是如果我尝试更新另一个ID或行。更新的值会附加在文本文件的末尾。它不会更新行。你能发布你的addresss.txt
文件吗?这是我的问题。见下文。