[英]Delete multiple line text file with bulk list using php
我想從帶有批量列表的文本文件中刪除多行。
我的基本文件file.txt
:
line1
line2
line3
line4
line5
要刪除bulkdel.txt
的行列表
line2
line4
期望的輸出:
line1
line3
line5
我怎樣才能做到這一點? 我只有一個比較腳本,但它沒有刪除:
$b = file('bulkdel.txt');
$f = file('file.txt');
foreach($f as $line) {
foreach($b as $bulk) {
if (strpos($line, $bulk) !== false) {
echo $line .'<br>';
}
}
}
有很多方法可以做到這一點。
您可以輕松地執行您正在執行的操作並unset
您不需要的密鑰。
foreach($f as $key => $line) {
foreach($b as $bulk) {
if (strpos($line, $bulk) !== false) {
unset($f[$key]);
}
}
}
您還可以創建一個函數來通過引用傳遞並使用unset()
通過使用array_search()
搜索值來修改數組:
function bulkRemove(&$f,$b)
{
foreach($b as $line) {
$search = array_search($line,$f);
if($search !== false)
unset($f[$search]);
}
}
bulkRemove($f,$b);
您還可以使用與閉合array_map()
和刪除空與array_filter()
$array = array_filter(array_map(function($v) use ($b) {
if(!in_array($v,$b))
return $v;
},$f));
編輯:由於您使用array_search()
選項,這:
$f = array('line1','line2','line3','line4','line5');
$b = array('line2','line4');
function bulkRemove(&$f,$b)
{
foreach($b as $line) {
$search = array_search($line,$f);
if($search !== false)
unset($f[$search]);
}
}
bulkRemove($f,$b);
echo count($f);
print_r($f);
給你:
3
Array
(
[0] => line1
[2] => line3
[4] => line5
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.