2

だから私は、vardumpが次のように見えるこの配列を持っています:

array (size=4)
  0 => 
    array (size=1)
      'field_4' => 
        array (size=1)
          0 => string 'item-1' (length=6)
  1 => 
    array (size=1)
      'field_4' => 
        array (size=1)
          0 => string 'info-1' (length=6)
  2 => 
    array (size=1)
      'field_5' => 
        array (size=1)
          0 => string 'item-2' (length=6)
  3 => 
    array (size=1)
      'field_5' => 
        array (size=1)
          0 => string 'info-2' (length=6)

したがって、配列を同じキーと結合しようとしています。たとえば、「field_4」は、「item-1」と「info-1」の 2 つの項目を持つ配列にマージ/結合されます。

したがって、私が望む最終結果は次のとおりです。

array (size=2)
  0 => 
    array (size=1)
      'field_4' => 
        array (size=2)
          0 => string 'item-1' (length=6)
          1 => string 'info-1' (length=6)
  1 => 
    array (size=1)
      'field_5' => 
        array (size=1)
          0 => string 'item-2' (length=6)
          1 => string 'info-2' (lenght=6)

これを処理するための PHP 便利な関数はありますか、それとも配列を再構築する必要がありますか?

ご覧いただきありがとうございます。

4

1 に答える 1

1

入力配列を反復処理して、マージされた配列を構築します。

$merged = array();
foreach ($input as $a)
    foreach ($a as $k => $v)
        foreach ($v as $v2)
            $merged[$k][] = $v2;

そして、それを奇妙な必須出力にフラット化します。

$flattened = array();
foreach ($merged as $k => $v)
    $flattened[] = array($k => $v);

入力:

$input = array(
    array('field_4' => array('item-1')),
    array('field_4' => array('info-1')),
    array('field_5' => array('item-2')),
    array('field_5' => array('info-2')),
);

出力:

array(
    array('field_4' => array('item-1', 'info-1')),
    array('field_5' => array('item-2', 'info-2')),
)

出力をダンプするとき、print_rまたはvar_exportより読みやすい例を作成するときvar_dump

于 2013-04-14T00:05:44.837 に答える