我有3个文本文件,请参阅以下
result1.txt
===========
782
778
719
result2.txt
============
130
129
719
result3.txt
============
718
719
585
520
我想在php中使用表单上传这些文件,之后我想检查所有文件中有多少重复值,记住重复意味着所有3个文件的公共值都是重复的,例如719包含在所有文件中
我尝试使用数组,但它不使用3数组
我使用array_intersect($array1,$array2,$array3);
但它不起作用。
任何人都可以帮助我吗?
$a = file('result1.txt');
$b = file('result2.txt');
$c = file('result3.txt');
foreach($a as $key => $value)
{
$a[$key] = $value;
}
foreach($b as $key => $value)
{
$b[$key] = $value;
}
foreach($c as $key => $value)
{
$c[$key] = $value;
}
$result=array_intersect($a,$b,$c);
print_r($result);
foreach(array_intersect($a, $b, $c) as $x) { echo $x; }
答案 0 :(得分:0)
尝试这样的事情:
$hash = array();
// for each input file
$file = new SplFileObject("input_file_name");
$file->setFlags(SplFileObject::DROP_NEW_LINE | SplFileObject::SKIP_EMPTY);
while (!$file->eof()) {
$num = (int) $file->fgets();
if (!array_key_exists($num, $hash)) {
$hash[$num] = 1;
} else {
$hash[$num] += 1;
}
}
$file = null;
// now we get only the entries with a count of 3
$triples = array_filter($hash, function ($val) { return $val == 3; });
$results = array_keys($triples);
最后,$results
将包含结果集中出现3次的值。
答案 1 :(得分:0)
my_string = "SELECT * FROM users WHERE first_name = 'first name value'"
my_string2 = "SELECT * FROM users WHERE first_name = 'first\"s name value'"
my_string3 = "SELECT * FROM users WHERE first_name = 'first\\'s name value'"
rx = /first_name = (['"])((?:(?!\1)[^\\])*(?:\\.(?:(?!\1)[^\\])*)*)\1/i
puts rx.match my_string # => first_name = 'first name value'
puts rx.match(my_string)[2] # => first name value
puts rx.match my_string2 # => first_name = 'first"s name value'
puts rx.match(my_string2)[2] # => first"s name value
puts rx.match my_string3 # => first_name = 'first\'s name value'
puts rx.match(my_string3)[2] # => first\'s name value
使用以下方法正常工作:
array_intersect()
将文件插入数组可以通过以下方式完成:
<?php
$array1 = [782,778,719];
$array2 = [130,129,719];
$array3 = [718,719,585,520];
$dupes = array_intersect($array1,$array2,$array3);
echo '<pre>',print_r($dupes),'</pre>';