在代码array_diff下运行时,仅返回一个值。但是,它应该返回两个值。我的第一个数组成立:
access.2018.08.09.log
access.2018.08.10.log
access.2018.08.12.log
我的第二个数组成立:
access.2018.08.09.log
array_diff()
仅返回:access.2018.08.12.log
有人可以指导为什么会发生这种情况。
<?php
$files = scandir('C:\wamp64\www\MyLogs\logsfiles');
foreach($files as $file) {
if($file == '.' || $file == '..') continue;
$S1=array($file.PHP_EOL);
print_r($S1);
}
$S2 =explode("\n", file_get_contents('uplodedregistry.txt'));
$result = array_diff_assoc($S1, $S2);
print_r($result);
?>
答案 0 :(得分:0)
您将继续覆盖$S1
变量-因此,在循环结束时,它将仅包含一个元素-循环中的最后一个值。相反,请在循环之前实例化数组,然后在循环内部将其追加。
<?php
$files = scandir('C:\wamp64\www\MyLogs\logsfiles');
$S1 = array(); // Init the array here
foreach($files as $file) {
if($file == '.' || $file == '..')
continue;
$S1[] = $file.PHP_EOL; // Append to $S1
}
$S2 = explode("\n", file_get_contents('uplodedregistry.txt'));
$result = array_diff($S1, $S2);
print_r($result);