Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果包含来自另一个具有不同值格式的数组的值,则从数组返回行_Php_Arrays_Search_Compare - Fatal编程技术网

Php 如果包含来自另一个具有不同值格式的数组的值,则从数组返回行

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

我需要比较两种不同格式的数组。目标是仅从文件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,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 
  }
}