PHP比较二维数组

Chr*_*her 5 php multidimensional-array

我一直用这个来绞尽脑汁.

我有两个数组:

数组1从CSV文件中提取.

Array
(
    [0] => Array
        (
            [uid] => cgajate
            [date] => 20120918
        )

    [1] => Array
        (
            [uid] => badrock5
            [date] => 20120920
        )

    [2] => Array
        (
            [uid] => ricoetc
            [date] => 20120921
        )

    [3] => Array
        (
            [uid] => ricoetc1
            [date] => 20120923
        )

    [4] => Array
        (
            [uid] => darbyfired
            [date] => 20120922
        )

    [5] => Array
        (
            [uid] => sagers.andrew
            [date] => 20120922
        )

    [6] => Array
        (
            [uid] => frankfurt9
            [date] => 20120923
        )

    [7] => Array
        (
            [uid] => beachboys
            [date] => 20120923
        )

    [8] => Array
        (
            [uid] => panterafan
            [date] => 20120923
        )

    [9] => Array
        (
            [uid] => kingsxrules
            [date] => 20120923
        )

    [10] => Array
        (
            [uid] => richard.bitto
            [date] => 20120924
        )

    [11] => Array
        (
            [uid] => christopher.boss
            [date] => 20120925
        )

    [12] => Array
        (
            [uid] => eric.robinson2
            [date] => 20120926
        )

)

数组2从SQL数据库中提取.

Array
(
    [0] => Array
        (
            [uid] => cgajate
            [date] => 20120919
        )

    [1] => Array
        (
            [uid] => ricoetc
            [date] => 20120921
        )

    [2] => Array
        (
            [uid] => ricoetc1
            [date] => 20120922
        )

    [3] => Array
        (
            [uid] => frankfurt9
            [date] => 20120923
        )

    [4] => Array
        (
            [uid] => beachboys
            [date] => 20120923
        )

    [5] => Array
        (
            [uid] => panterafan
            [date] => 20120923
        )

    [6] => Array
        (
            [uid] => kingsxrules
            [date] => 20120923
        )

    [7] => Array
        (
            [uid] => eric.robinson2
            [date] => 20120926
        )

)

我基本上要做的是检查是否有任何UID匹配.如果有匹配,它将检查哪个日期比另一个更新(所以基本上什么日期大于).然后它会将它们添加到一个数组中,其中UID与两个数组都不匹配.

对不起,如果这很难理解.这有点难以解释.

任何和所有的帮助表示赞赏,谢谢大家提前.

Pet*_*bot 3

由于 PHP 数组本身就是哈希映射,因此您可以迭代一个数组并将每个日期插入到一个新数组中,并以 UID 为键:

$out = array();
foreach ($first_array as $x) {
    $out[$x['uid']] = $x['date'];
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以迭代第二个数组,检查是否有任何 UID 已作为数组中的键存在$out。如果 UID 已经存在,那么您可以比较日期并获取您喜欢的任何数据。例如,类似:

foreach ($second_array as $y) {
    if (array_key_exists($y['uid'], $out)) {
        if ($out[$y['uid']] < $y['date']) {
            $out[$y['uid']] = $y['date'];
        }
    } else {
        $out[$y['uid']] = $date;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,将数据展平:

$_out = array();
foreach ($out as $uid => $date) {
    $_out[] = array("uid" => $uid, "date" => $date);
}
$out = $_out;
Run Code Online (Sandbox Code Playgroud)