2012-01-19 11 views
1

これは(私自身の機能を除いて)行うことはできませんが、私は何とか尋ねます。PHP 2D配列の再構築、HASHxARRAY - > ARRAYxHASH

I

array(
    'item1' => array(
       'Hello', 
       'Good', 
       ), 
    'item2' => array(
       'World', 
       'Bye', 
       ), 
) 

個々のフィールドは、Webフォームから来るようにPHPの配列を持っている

私は、次の

array(
    array(
    'item1' => 'Hello', 
    'item2' => 'World', 
    ), 
    array(
    'item1' => 'Good', 
    'item2' => 'Bye', 
    ), 
) 

にそれを再配置したいオブジェクトの配列を作成しますフィールド配列から

これを行う関数を書くことができます。

しかし、私はの組み込み配列関数の1つがこれを達成することができますか?

+1

いいえ、この特定の*変換を行う組み込み関数はありません。あなたはそれを行うようにいくつかの既存の関数を一緒に束ねることができます... – deceze

答えて

0

いいえこれを行う機能はありません。

1

なしありこれを行うための機能が内蔵されている - しかし、ここでその意志ユーザ定義のいずれかです。

function convert_array ($array) { 
    $result = array(); 
    foreach ($array as $key => $inner) { 
    for ($i = 0; isset($inner[$i]); $i++) { 
     $result[$i][$key] = $inner[$i]; 
    } 
    } 
    return $result; 
} 

See it working

1

「最も確かに、最も効率的ではありませんが、に近いです1つの機能 "のようになります。 ;)

array_map(function ($i) use ($array) { return array_combine(array_keys($array), $i); }, call_user_func_array('array_map', array_merge(array(function() { return func_get_args(); }), $array))); 

http://codepad.viper-7.com/xIn3Oqを参照してください。

+0

ああ、プロダクションでこれを使用しないでください。 ;) – deceze