2016-12-16 36 views
1

我有ARRAY1这样的:PHP - 相交multidemsional阵列与一个相同的值

Array 
(
[0] => Array 
    (
     [0] => test 
     [1] => 123 
    ) 

[1] => Array 
    (
     [0] => testx 
     [1] => 456 
    ) 

) 

和ARRAY2这样的:

Array 
(
[0] => Array 
    (
     [0] => test 
     [1] => somenumber 
    ) 

[1] => Array 
    (
     [0] => title 
     [1] => sometitle 
    ) 
[2] => Array 
    (
     [0] => testx 
     [1] => othernumber 
    ) 

) 

我需要这样的输出:

Array 
(
[0] => Array 
    (
     [0] => test 
     [1] => 123 
     [2] => somenumber 
    ) 

[1] => Array 
    (
     [0] => testx 
     [1] => 456 
     [1] => othernumber 
    ) 

) 

所以我只需要比较每个数组的[0]键的值。我曾尝试与array_intersect和array_diff组合,但我无法让它工作。任何人都可以向我指出一些方向,做这件事的适当的功能/方法是什么?

回答

1

你可以用一些指令做:)

<?php 

$array1[] = ['test', '123']; 
$array1[] = ['testx', '456']; 

$array2[] = ['test', 'a']; 
$array2[] = ['testx', 'b']; 
$array2[] = ['other', 'c']; 

$indexColumns = array_column($array1, 0); 
// We extact an array of key/values for column 0 
// = [0 => test, 1 => testx] 

foreach($array2 as $key => $value) { 
    // If we can find the value of the first column on the indexColumn 
    if(($foundKey = array_search($value[0], $indexColumns)) !== false) { 
    unset($value[0]); 
    $array1[$foundKey] = array_merge($array1[$foundKey], $value); 
    } 
} 

输出:

array (size=2) 
    0 => 
    array (size=3) 
     0 => string 'test' (length=4) 
     1 => string '123' (length=3) 
     2 => string 'a' (length=1) 
    1 => 
    array (size=3) 
     0 => string 'testx' (length=5) 
     1 => string '456' (length=3) 
     2 => string 'b' (length=1) 
+0

它的工作。谢谢! – codexy