2017-08-07 9 views
0

配列の配列の交点を見つけることで新しい配列を構築しています。配列の交点を見つけて新しい配列のセットを作成

これはおそらく、ほとんどの人にとって単純な集合理論の問題ですが、私の頭を包み込むのは難しいです。

だから私は鍵付き配列があります。

$myArray = [ 
'array1' => [A, B, C], 
'array2' => [A, B, C, D], 
'array3' => [A, B, C, D], 
'array4' => [D], 
] 

をそして目標は、彼らが交差している場合、前の列の連結キーとキー入力全く新しい配列を構築することです:基本的にこのよう

を:

$newArray = [ 
    'array1,array2,array3' => [A, B, C], 
    'array2,array3,array4' => [D] 
    ] 

配列1、配列2、ARRAY3コマンドでABCを有するので、彼らはそうで配列2、ARRAY3、array4と同じものキー付きのアレイとして形成されます。

私はarray_intersectを実験しようとしましたが、探しているものではないか、おそらく私が本当に間違った方法で解決しているようです。どんなアイデアでも大歓迎です。

$myArray = [ 
'array1' => [A, B, C], 
'array2' => [A, B, C, D], 
'array3' => [A, B, C, D], 
'array4' => [D], 
]; 


$newArray = []; 
$keys = array_keys($myArray); 

for($i = 0, $size = count($myArray); $i < $size; $i++){ 
    for($k = $i; $k < $size; $k++){ 
     print_r(array_intersect($myArray[$keys[$i]], $myArray[$keys[$k]]));  
    } 
} 

    //Foal 
    // 'array1,array2,array3' => [A, B, C] 
    // 'array2,array3,array4' => [D] 
+0

質問は完全に定義されていないです。 '$ newArray'にはキー' 'array1、array4''と' '[A]、 ''、C、D 'などのキー' 'array2、array3''も含まれていますか? – axiac

+0

'array2、array3'は、' array1、array2、array3'、 'array2、array3、array4'の中にすべての要素が存在するので含まれていませんが、set理論では空集合も新しいエントリとみなされます – XDProgrammer

答えて

2

このコードは出力として目的の配列を与えます。プットアウト

$myArray = [ 
'array1' => ['A', 'B', 'C'], 
'array2' => ['A', 'B', 'C', 'D'], 
'array3' => ['A', 'B', 'C', 'D'], 
'array4' => ['D'], 
]; 
// Define new arrays 
$newArray = []; 
$finalArray = []; 

// loop the array and create a new array with values like (A,B,C..) as keys 
foreach($myArray as $key=>$value){ 
    foreach($value as $k=>$v){ 
     // if already value exists append new value with comma 
     $newArray[$v] = isset($newArray[$v]) ? $newArray[$v].','.$key:$key; 
    } 
} 
foreach($newArray as $key=>$value){ 
     $finalArray[$value][] = $key; 

} 
print_r($finalArray); 

Array 
(
    [array1,array2,array3] => Array 
     (
      [0] => A 
      [1] => B 
      [2] => C 
     ) 

    [array2,array3,array4] => Array 
     (
      [0] => D 
     ) 

) 
+0

印象的な、!ありがとうございました – XDProgrammer

関連する問題