Php 如果包含来自另一个具有不同值格式的数组的值,则从数组返回行
我需要比较两种不同格式的数组。目标是仅从文件1打印包含来自文件2的值的行 我想我必须将这两个文件加载到两个数组中并进行比较。我尝试了Php 如果包含来自另一个具有不同值格式的数组的值,则从数组返回行,php,arrays,search,compare,Php,Arrays,Search,Compare,我需要比较两种不同格式的数组。目标是仅从文件1打印包含来自文件2的值的行 我想我必须将这两个文件加载到两个数组中并进行比较。我尝试了array\u intersect(),在\u array()和array\u key\u exists(),但没有任何效果 以下是数据文件的示例: 文件1: 2.26.81.0,4,10146128,10165054 82.132.227.75,7,10146130,10166530,10166093 91.206.0.35,10,10150898,1016580
array\u intersect()
,在\u array()
和array\u key\u exists()
,但没有任何效果
以下是数据文件的示例:
文件1:
2.26.81.0,4,10146128,10165054
82.132.227.75,7,10146130,10166530,10166093
91.206.0.35,10,10150898,10165809
88.145.18.102,3,10169097,10141126,21729395
文件2:
10146128
10146130
结果应该如下所示:
2.26.81.0,4,10146128,10165054
82.132.227.75,7,10146130,10166530,10166093
我已经在2个数组中加载了这两个文件,现在需要比较它们
$bought = fopen('f_data.csv', 'r');
$visited = fopen('l_data.csv', 'r');
$line = fgets($bought);
while(! feof($bought)) {
$line = fgets($bought);
$bought_f[] = $line;
}
$line2 = fgets($visited);
while(! feof($visited)) {
$line2 = fgets($visited);
$visited_f[] = $line2;
}
您使用的函数不起作用,因为您将数组中的第一个文件转换为一个数组元素,但由于每一行不是一个值而是一个值列表,因此您应该创建一个二维数组(数组数组数组),因此每个数组元素只包含一个值。例如,您可以使用和执行以下操作: 根据比较和将行转换回逗号分隔字符串所需的内容而定
还请注意,如果第一个文件在同一行中包含第二个文件的多个值,则可以得到重复的结果,在这种情况下,解决方案是在获得匹配后立即停止检查第二个数组的值。Simon,我认为如果你能把注意力集中在你遇到麻烦的部分,这个问题会更容易被接受。现在它扫描为“学生试图让我们做他的作业”。例如,你可以问“我如何比较两个数组?”并省略整个作业的细节。有针对性的问题更有可能对社区具有普遍价值。谢谢,关于如何比较两个数组,有很多相同的问题,但每个问题都是相同的,90%的答案是=相交。但是你是对的。文件中有多少行?文件1-2,3mil和文件2-900k
// getting an array with an element for each line
$file1=file("file1.csv");
$length=count($file1);
// converting each line in an array of the comma-separated values
for ($i=0;$i<$length;$i++) {
$file1[$i]=explode(",",$file1[$i]);
}
//for file2 using file() is enough as each line only contains one value
$file2=file("file2.csv");
foreach ($file1 as $line) {
foreach ($file2 as $value) {
// code for checking if $value is contained in $line and store/print the result
}
}