0

我正在尝试在文件中附加数据
我有一个数组结果包含这个值:

Array ( [0] => Array ( [name] => Fanny [asset] => 1034 ) ) Array ( [0] => Array ( [name] => Gabriel [asset] => 1089 ) ) Array ( [0] => Array ( [name] => Martin [asset_no] => 1520> ) ) 

我使用 foreach 获取值,然后将它们插入文件中:

foreach ($result as $value){
  $name = $value['name'];
  $asset = $value['asset'];
  $dir = "C:/Users/<users>/data";
  if (!is_dir($dir)) {
    mkdir($dir,0777);
  }
file_put_contents("$dir/data", "$name , $data \r", FILE_APPEND);

我的数据文件中的数据是:

Fanny, 1034
Gabriel, 1089
Martin, 1520

当我重新运行我的文件时,它会复制存储我的数据的文件中的值:

Fanny, 1034
Gabriel, 1089
Martin, 1520
Fanny, 1034
Gabriel, 1089
Martin, 1520

我想防止现有值的重复
谁能告诉我错误在哪里。谢谢您的帮助 !

4

2 回答 2

1

您需要删除 FILE_APPEND 参数,因为它将数据附加到文件末尾,因为您一次又一次地重新插入所有数据,您不需要旧数据,因此您可以将其删除,因此 file_put_contents 将删除旧文件数据并存储而是新数据

如果您需要比较存储在文件中的旧数据和数组中的新数据,我建议您首先从文件中读取数据,将其转换为数组(可能使用 json_decode)并创建一个函数来循环遍历 2 个数组并附加没有的值不存在

于 2022-03-01T09:23:54.773 回答
0

为了解决我的问题,我使用了一个包含数据的数组并比较了我想添加的数据,我想插入:

$file = file_get_contents("$dir/data");
$data = explode("\r",$file);
foreach ($result as $value) {
  $name = $value['name'];
  $asset = $value['asset'];
  $message = "$name, $asset";
  if (in_array($message, $data)){
     echo "$message already exist ";
  } else {
     file_put_contents("$dir/data", "$message\r", FILE_APPEND);
  }
}
于 2022-03-01T10:19:29.237 回答