2012-02-14 22 views
0

私は次のように、1次元配列です。私は値としてプロダクトキーを使用してこの配列から2次元配列を作成したいと思います。キーに基づいて既存の配列から新しい配列を作成

このような多次元配列の作成方法は?

Array 
(
    [0] => Array 
     (
      [0] => God 
      [listitemname] => God 
      [1] => 20a3208eca59 
      [upload_key] => 20a3208eca59 
      [2] => d296772dd9045b1d99e0ff5a 
      [file_key] => d296772dd9045b1d99e0ff5a 
      [3] => a4e4eb6d7621e585d66b424ece08 
      [folderkey] => a4e4eb6d7621e585d66b424ece08 
      [4] => d9ef5a3cacbc 
      [productkey] => d9ef5a3cacbc 
      [5] => 1 
      [file_type] => 1 
     ) 

    [1] => Array 
     (
      [0] => God 
      [listitemname] => God 
      [1] => 877ede85abd9 
      [upload_key] => 877ede85abd9 
      [2] => 5a769542b3f75c78a6fd9bda 
      [file_key] => 5a769542b3f75c78a6fd9bda 
      [3] => dfcc7d5523de534dd1d148a67f6f 
      [folderkey] => dfcc7d5523de534dd1d148a67f6f 
      [4] => d9ef5a3cacbc 
      [productkey] => d9ef5a3cacbc 
      [5] => 2 
      [file_type] => 2 
     ) 

    [2] => Array 
     (
      [0] => God 
      [listitemname] => God 
      [1] => 32d8dbdb7d31 
      [upload_key] => 32d8dbdb7d31 
      [2] => 413057623b1d11617e4eba71 
      [file_key] => 413057623b1d11617e4eba71 
      [3] => 3cd3bab180cc1ce6350ec6b29c46 
      [folderkey] => 3cd3bab180cc1ce6350ec6b29c46 
      [4] => d9ef5a3cacbc 
      [productkey] => d9ef5a3cacbc 
      [5] => 4 
      [file_type] => 4 
     ) 

    [3] => Array 
     (
      [0] => God 
      [listitemname] => God 
      [1] => 93854a71f69e 
      [upload_key] => 93854a71f69e 
      [2] => ddd697e3ec13dd49a987f17b 
      [file_key] => ddd697e3ec13dd49a987f17b 
      [3] => e41ff80e0a18b6cb4cf874730b52 
      [folderkey] => e41ff80e0a18b6cb4cf874730b52 
      [4] => d9ef5a3cacbc 
      [productkey] => d9ef5a3cacbc 
      [5] => 5 
      [file_type] => 5 
     ) 

    [4] => Array 
     (
      [0] => Games 
      [listitemname] => Games 
      [1] => 17eec2f803be 
      [upload_key] => 17eec2f803be 
      [2] => 54f74c98ecb267ee5da74da1 
      [file_key] => 54f74c98ecb267ee5da74da1 
      [3] => dc035e3347f429f4b12d1af00d7a 
      [folderkey] => dc035e3347f429f4b12d1af00d7a 
      [4] => 4c8a0251e489 
      [productkey] => 4c8a0251e489 
      [5] => 1 
      [file_type] => 1 
     ) 

    [5] => Array 
     (
      [0] => Games 
      [listitemname] => Games 
      [1] => df9c2041eff0 
      [upload_key] => df9c2041eff0 
      [2] => d65e22242ca45cbf935af4b9 
      [file_key] => d65e22242ca45cbf935af4b9 
      [3] => 45f1ace431926347aa1fcf1ae2c6 
      [folderkey] => 45f1ace431926347aa1fcf1ae2c6 
      [4] => 4c8a0251e489 
      [productkey] => 4c8a0251e489 
      [5] => 2 
      [file_type] => 2 
     ) 

    [6] => Array 
     (
      [0] => Games 
      [listitemname] => Games 
      [1] => 934380f97ae1 
      [upload_key] => 934380f97ae1 
      [2] => 684505352bb62e8c61ea8c8c 
      [file_key] => 684505352bb62e8c61ea8c8c 
      [3] => 2b86c8f004f97bad9600f0e23eed 
      [folderkey] => 2b86c8f004f97bad9600f0e23eed 
      [4] => 4c8a0251e489 
      [productkey] => 4c8a0251e489 
      [5] => 4 
      [file_type] => 4 
     ) 

    [7] => Array 
     (
      [0] => Games 
      [listitemname] => Games 
      [1] => c85be159256e 
      [upload_key] => c85be159256e 
      [2] => eee3f59502b57e07fd83a9b1 
      [file_key] => eee3f59502b57e07fd83a9b1 
      [3] => 9ec2158c662b2c0068308bc461fa 
      [folderkey] => 9ec2158c662b2c0068308bc461fa 
      [4] => 4c8a0251e489 
      [productkey] => 4c8a0251e489 
      [5] => 5 
      [file_type] => 5 
     ) 

) 

私はkeyasとして、すべてのプロダクトキーを持つと

Array 
(
    [d9ef5a3cacbc] => Array{ 
     [0](
      [0] => God 
      [listitemname] => God 
      [1] => 20a3208eca59 
      [upload_key] => 20a3208eca59 
      [2] => d296772dd9045b1d99e0ff5a 
      [file_key] => d296772dd9045b1d99e0ff5a 
      [3] => a4e4eb6d7621e585d66b424ece08 
      [folderkey] => a4e4eb6d7621e585d66b424ece08 
      [4] => d9ef5a3cacbc 
      [productkey] => d9ef5a3cacbc 
      [5] => 1 
      [file_type] => 1 
     ) 
    [1] (
      [0] => God 
      [listitemname] => God 
      [1] => 877ede85abd9 
      [upload_key] => 877ede85abd9 
      [2] => 5a769542b3f75c78a6fd9bda 
      [file_key] => 5a769542b3f75c78a6fd9bda 
      [3] => dfcc7d5523de534dd1d148a67f6f 
      [folderkey] => dfcc7d5523de534dd1d148a67f6f 
      [4] => d9ef5a3cacbc 
      [productkey] => d9ef5a3cacbc 
      [5] => 2 
      [file_type] => 2 
     ) 
    [2]  (
      [0] => God 
      [listitemname] => God 
      [1] => 32d8dbdb7d31 
      [upload_key] => 32d8dbdb7d31 
      [2] => 413057623b1d11617e4eba71 
      [file_key] => 413057623b1d11617e4eba71 
      [3] => 3cd3bab180cc1ce6350ec6b29c46 
      [folderkey] => 3cd3bab180cc1ce6350ec6b29c46 
      [4] => d9ef5a3cacbc 
      [productkey] => d9ef5a3cacbc 
      [5] => 4 
      [file_type] => 4 
     ) 
    [3] (
      [0] => God 
      [listitemname] => God 
      [1] => 93854a71f69e 
      [upload_key] => 93854a71f69e 
      [2] => ddd697e3ec13dd49a987f17b 
      [file_key] => ddd697e3ec13dd49a987f17b 
      [3] => e41ff80e0a18b6cb4cf874730b52 
      [folderkey] => e41ff80e0a18b6cb4cf874730b52 
      [4] => d9ef5a3cacbc 
      [productkey] => d9ef5a3cacbc 
      [5] => 5 
      [file_type] => 5 


    } 

    [4c8a0251e489] => Array{ 
     [0](
      [0] => Games 
      [listitemname] => Games 
      [1] => 17eec2f803be 
      [upload_key] => 17eec2f803be 
      [2] => 54f74c98ecb267ee5da74da1 
      [file_key] => 54f74c98ecb267ee5da74da1 
      [3] => dc035e3347f429f4b12d1af00d7a 
      [folderkey] => dc035e3347f429f4b12d1af00d7a 
      [4] => 4c8a0251e489 
      [productkey] => 4c8a0251e489 
      [5] => 1 
      [file_type] => 1 
     ) 
    [1] (
[0] => Games 
      [listitemname] => Games 
      [1] => 934380f97ae1 
      [upload_key] => 934380f97ae1 
      [2] => 684505352bb62e8c61ea8c8c 
      [file_key] => 684505352bb62e8c61ea8c8c 
      [3] => 2b86c8f004f97bad9600f0e23eed 
      [folderkey] => 2b86c8f004f97bad9600f0e23eed 
      [4] => 4c8a0251e489 
      [productkey] => 4c8a0251e489 
      [5] => 4 
      [file_type] => 4 
     ) 
    [2]  (
      [0] => Games 
      [listitemname] => Games 
      [1] => c85be159256e 
      [upload_key] => c85be159256e 
      [2] => eee3f59502b57e07fd83a9b1 
      [file_key] => eee3f59502b57e07fd83a9b1 
      [3] => 9ec2158c662b2c0068308bc461fa 
      [folderkey] => 9ec2158c662b2c0068308bc461fa 
      [4] => 4c8a0251e489 
      [productkey] => 4c8a0251e489 
      [5] => 5 
      [file_type] => 5 
     ) 

} 
+3

実際には二次元配列 – Julien

+2

です。実際にはすでに2次元配列である – Gordon

+0

うん、私はあなたの例がまあまあだと感じています... –

答えて

2

ないあなたが試したのかわから下記のショーとしての価値としてレコードをcoresponding、2次元の配列を取得したいと思いますが、これは見えますそれはあなたが必要とするものと同様です。

$res = array(); 

// assuming you want an array by product key 
foreach($outer as $inner) 
{ 
    $key = $inner['productKey']; 
    if(!isset($res[$key])) 
     $res[$key] = array(); 
    $res[$key][] = $inner; 
} 
// $res now holds what you're looking for 

さて、あなたはもう少し複雑な何かを探しているように見える:ちょうど観測として

function not_numeric($a){return !is_numeric($a);} 

// you only care about the non-numeric keys of the arrays. 
$keys = array_map('not_numeric', array_keys($outer[0])); 
$res = array(); 
foreach($keys as $key) 
{ 
    // same idea as above, only nested this time. 
    if(!isset($res[$key])) 
     $res[$key] = array(); 
    // this is exactly the same as the first example, only with an additional 
    // lookup. You can make this better by judicious use of references, but 
    // that is an exercise up to the reader. 
    foreach($outer as $inner) 
    { 
     $inKey = $inner[$key]; 
     if(!isset($res[$key][$inKey])) 
      $res[$key][$inKey] = array(); 
     $res[$key][$inKey][] = $inner; 
    } 
} 

// $res now holds what you're looking for 

、この構造は非常に非効率的であり、それが参照して追加することによって改善されるかもしれないがデータ構造を再検討したいと思うかもしれません。

関連する問題