有两个数组:
<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>
比较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>
比较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>
<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>
<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>