Heim > Backend-Entwicklung > PHP-Tutorial > PHP数组的合并处理

PHP数组的合并处理

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-06 20:47:02
Original
1124 Leute haben es durchsucht

有两个数组:

<code class="lang-php">===========
A:

array
(
    [0] => Array
        (
            [Vtime] => 2014-01-18 00:22:43
            [qr] => 0a5500f5d5e5847209d83a7fe637a34f
        )

    [1] => Array
        (
            [Vtime] => 2014-01-17 00:00:00
            [qr] => 218e412b1d73f771e8b01b9d1f678f5b
        )
)

===========
B:

array
(
    [0] => Array
        (
            [Date] => 2014-01-18 00:22:43
            [Md5] => 0a5500f5d5e5847209d83a7fe637a34f
        )

    [1] => Array
        (
            [Date] => 2014-01-18 00:22:43
            [Md5] => 218e412b1d73f771e8b01b9d1f678f5b
        )
    [2] => Array
        (
            [Date] => 2014-01-17 00:00:00
            [Md5] => 218e412b1d73f771e8b01b9d1f678f5b
        )
    [3] => Array
        (
            [Date] => 2014-01-17 00:00:00
            [Md5] => 218e412b1d73f771e8b01b9d1f678f5b
        )
    [4] => Array
        (
            [Date] => 2014-01-17 00:00:00
            [Md5] => 218e412b1d73f771e8b01b9d1f678f5b
        )
)
</code>
Nach dem Login kopieren
Nach dem Login kopieren

比较A数组Vtime和B数组中的Date是否相同,如果相同将数据合并(vtime, qr, Date, Md5)放到C数组,
如果不相同,则单独把A数组放到C数组。
(A数组要和B数组的每一个都对比,B数组只有和A数组对应的才会保留到C数组)

求高手帮我想个办法。

回复内容:

有两个数组:

<code class="lang-php">===========
A:

array
(
    [0] => Array
        (
            [Vtime] => 2014-01-18 00:22:43
            [qr] => 0a5500f5d5e5847209d83a7fe637a34f
        )

    [1] => Array
        (
            [Vtime] => 2014-01-17 00:00:00
            [qr] => 218e412b1d73f771e8b01b9d1f678f5b
        )
)

===========
B:

array
(
    [0] => Array
        (
            [Date] => 2014-01-18 00:22:43
            [Md5] => 0a5500f5d5e5847209d83a7fe637a34f
        )

    [1] => Array
        (
            [Date] => 2014-01-18 00:22:43
            [Md5] => 218e412b1d73f771e8b01b9d1f678f5b
        )
    [2] => Array
        (
            [Date] => 2014-01-17 00:00:00
            [Md5] => 218e412b1d73f771e8b01b9d1f678f5b
        )
    [3] => Array
        (
            [Date] => 2014-01-17 00:00:00
            [Md5] => 218e412b1d73f771e8b01b9d1f678f5b
        )
    [4] => Array
        (
            [Date] => 2014-01-17 00:00:00
            [Md5] => 218e412b1d73f771e8b01b9d1f678f5b
        )
)
</code>
Nach dem Login kopieren
Nach dem Login kopieren

比较A数组Vtime和B数组中的Date是否相同,如果相同将数据合并(vtime, qr, Date, Md5)放到C数组,
如果不相同,则单独把A数组放到C数组。
(A数组要和B数组的每一个都对比,B数组只有和A数组对应的才会保留到C数组)

求高手帮我想个办法。

<code class="lang-php"><?php $A = array(
    array(
        'Vtime' => 1,
        'qr' => 2,
    ),
    array(
        'Vtime' => 3,
        'qr' => 4,
    ),
);

$B = array(
    array(
        'date' => 1,
        'md5' => 2,
    ),
    array(
        'date' => 5,
        'md5' => 6,
    ),
);

$D = array();
foreach($B as $b) {
    // 没有考虑date重复的问题
    $D[$b['date']] = $b;
}

$C = $A;
foreach($C as &$c) {
    if(isset($D[$c['Vtime']])) {
        $c = array_merge($c, $D[$c['Vtime']]);
    }
}
unset($c);

var_dump($C);
</code>
Nach dem Login kopieren

<code>$A = array(); //初始数据$A
$B = array(); //初始数据$B

$D = array();
foreach($B as $b) {
    $D['date'][] = $b['Date'];
    $D['md5'][] = $b['Md5'];
}
$D = array_combine($D['date'], $D['md5']);

foreach($A as &$a)
    array_key_exists($a['Vtime'], $D) && $a['md5'] = $D[$a['Vtime']];

$C = $A;
</code>
Nach dem Login kopieren

<code class="lang-php">$c = [];
$i = 0;
//遍历$a
array_walk(
    $a,
    function ($v, $k) use ($b, &$c, &$i) {
        //遍历$b
        foreach ($b as $bb) {
            //不同的部分
            $c[$i] = $v;
            //如果相同
            $v['Vtime'] == $bb['Date'] && list(
                $c[$i]['Date'],
                $c[$i]['Md5']
                ) = [
                $bb['Date'],
                $bb['Md5']
            ];
            $i++;
        }
    }
);
</code>
Nach dem Login kopieren
Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
PHP-Datenerfassung?
Aus 1970-01-01 08:00:00
0
0
0
PHP-Erweiterung intl
Aus 1970-01-01 08:00:00
0
0
0
Wie man PHP gut lernt
Aus 1970-01-01 08:00:00
0
0
0
Mehrere PHP-Versionen
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage