接收文件从该文件中删除一行并创建一个新文件?

时间:2017-04-21 01:13:22

标签: php arrays

我有一个文本文档,其中包含一个名称列表,每个文档都在自己的行中。我希望能够浏览该文件,并删除一个特定的名称。因此,我尝试创建一个包含所有原始名称的数组,循环遍历该数组,并将除了需要删除的名称之外的所有名称添加到新数组中。如果我尝试打印新数组,它仍然包含所有名称,包括需要删除的名称。

   $Delete = "Pete";
   $startingNames = file("names.txt");
   $newNames = array();
   foreach($startingNames as $name)
   {
      if(strpos($name, $Delete) == false) //If its not the one that needs to be deleted
      {
         $newNames[] = $name; //Add it to the new array.
      }
   }

1 个答案:

答案 0 :(得分:1)

在这种情况下,strpos将返回0,这将被解释为false。相反,我们需要使用三重等于运算符来确认类型和值。

strpos($name, $Delete) === false

这也是使用array_filter的好时机。此函数允许您在数组上运行“过滤器函数”,创建一个只包含所需值的新数组。例如:

<?php

$names = ['Dave', 'Pete', 'Alex', 'Mark'];
$delete = 'Mark';
$newNames = array_filter($names, function ($name) use ($delete) {
  return strpos($name, $delete) === false;
});

print_r($newNames);