比较数组与array_diff - 但只有第一个字符

时间:2015-04-13 15:28:27

标签: php mysql arrays csv 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

我不知道在csv加载到数组中时如何切断字符串。 第二个数组是从mysql_query中编写的。 关于我如何做到这一点的任何建议?

2 个答案:

答案 0 :(得分:3)

我认为这样的事情应该有效:

(这里我只使用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);
    });

?>

答案 1 :(得分:0)

可能更容易修改数据。这将删除每个元素中的空格和所有内容:

$rows = preg_replace('/ .*/', '', $rows);

然后array_diff()应按预期工作。