将数组与 array_diff 进行比较 - 但只比较第一个字符
Compare Arrays with array_diff - but only first chars
我遇到了以下情况。
我在 mysql 数据库中得到了一个 csv 文件和一些数据。
我想加载 csv 文件并将其与 mysql 数据库中的一行进行比较。
csv 文件获得了以下类型的数据:
eet003 240
eet003 180
eet003 280
eet299 100
但是数据库中的数据是这样的:
eet003
eet299
所以两个数据都存储在数组中。
$array1
$array2
我想比较两个数组并将结果保存在第三个数组中。
$diff = array_diff($array1, $array2)
但我只想比较数据的前 6 个字符。所以现在 eet003 240 与 eet003 不同。但对我来说是一样的。我只需要 eet003 例如
我怎样才能做到这一点?我现在是 substr 函数,但 array1 是按以下方式创建的:
$rows = array(); //aray for csv file
$rows = file('pinesite_eet.csv', FILE_IGNORE_NEW_LINES); //write csv in array
我不知道 du 如何在将 csv 加载到数组中时从 csv 中剪切字符串。
第二个数组是从mysql_query写的。
对我如何做到这一点有什么建议吗?
我认为这样的事情应该可行:
(这里我只是使用array_udiff()
和一个匿名函数,我只使用文件数据的第一部分并将其与数据库数据进行比较)
<?php
$result = array_udiff($fileData, $dbData, function($a, $b) {
if(strcasecmp(explode(" ", $a)[0], $b) == 0)
return 0;
return strcasecmp(explode(" ", $a)[0], $b);
});
?>
只修改数据可能更容易。这将删除每个元素中的 space 和后面的所有内容:
$rows = preg_replace('/ .*/', '', $rows);
然后 array_diff()
应该会按预期工作。
我遇到了以下情况。 我在 mysql 数据库中得到了一个 csv 文件和一些数据。 我想加载 csv 文件并将其与 mysql 数据库中的一行进行比较。
csv 文件获得了以下类型的数据:
eet003 240
eet003 180
eet003 280
eet299 100
但是数据库中的数据是这样的:
eet003
eet299
所以两个数据都存储在数组中。
$array1
$array2
我想比较两个数组并将结果保存在第三个数组中。 $diff = array_diff($array1, $array2)
但我只想比较数据的前 6 个字符。所以现在 eet003 240 与 eet003 不同。但对我来说是一样的。我只需要 eet003 例如
我怎样才能做到这一点?我现在是 substr 函数,但 array1 是按以下方式创建的:
$rows = array(); //aray for csv file
$rows = file('pinesite_eet.csv', FILE_IGNORE_NEW_LINES); //write csv in array
我不知道 du 如何在将 csv 加载到数组中时从 csv 中剪切字符串。 第二个数组是从mysql_query写的。 对我如何做到这一点有什么建议吗?
我认为这样的事情应该可行:
(这里我只是使用array_udiff()
和一个匿名函数,我只使用文件数据的第一部分并将其与数据库数据进行比较)
<?php
$result = array_udiff($fileData, $dbData, function($a, $b) {
if(strcasecmp(explode(" ", $a)[0], $b) == 0)
return 0;
return strcasecmp(explode(" ", $a)[0], $b);
});
?>
只修改数据可能更容易。这将删除每个元素中的 space 和后面的所有内容:
$rows = preg_replace('/ .*/', '', $rows);
然后 array_diff()
应该会按预期工作。