0

グループ化された配列を生成しようとしています。

これが私のコードです:

function group_assoc($array, $key) {
$return = array();
foreach($array as $v) {
    $return[$v[$key]][] = $v;
}
return $return;
}

現在の出力は次のとおりです。

Array
(
[2007] => Array
    (
        [0] => Array
            (
                [sponsorID] => 4
                [showType] => 2
                [categoryID] => 3
                [sponYear] => 2007
                [sponName] => asdasd
                [sponFileName] => design-desktop-wallpaper-2114754569.jpg
            )

    )

[2013] => Array
    (
        [0] => Array
            (
                [sponsorID] => 2
                [showType] => 1
                [categoryID] => 6
                [sponYear] => 2013
                [sponName] => Test Sponsor
                [sponFileName] => Jellyfish.jpg
            )

        [1] => Array
            (
                [sponsorID] => 3
                [showType] => 2
                [categoryID] => 1
                [sponYear] => 2013
                [sponName] => asdads
                [sponFileName] => Jellyfish.jpg
            )

    )

)

どうすればこのようなことができますか:

Array
(
[0] => 
[sponYear] => '2013'
Array
    (
        [0] => Array
            (
                [sponsorID] => 4
                [showType] => 2
                [categoryID] => 3
                [sponYear] => 2007
                [sponName] => asdasd
                [sponFileName] => design-desktop-wallpaper-2114754569.jpg
            )

    )

[1] => 
[sponYear] => '2007'
Array
    (
        [0] => Array
            (
                [sponsorID] => 2
                [showType] => 1
                [categoryID] => 6
                [sponYear] => 2013
                [sponName] => Test Sponsor
                [sponFileName] => Jellyfish.jpg
            )

        [1] => Array
            (
                [sponsorID] => 3
                [showType] => 2
                [categoryID] => 1
                [sponYear] => 2013
                [sponName] => asdads
                [sponFileName] => Jellyfish.jpg
            )

    )

)

表示のために最初のループを実行すると、「sponYear」を表示できるようになりますか?

4

2 に答える 2

1

それを消費する foreach ループを変更することで、現在の出力をそのまま使用できます。

foreach (group_assoc($input_array, $my_key) as $year => $sponsors) {
    foreach ($sponsors as $sponsor) {
        // Do stuff with $sponsor['sponName'] etc.
    }
}
于 2013-03-12T22:32:01.473 に答える
0

毎年のあなたの配列はスポンサーだと思います。したがって、関数は次のようになります。

function group_assoc($array, $key) {
    $return = array(
        'sponYear' => $key,
        'sponsors' => array()
    );
    foreach($array as $v) {
        $return['sponsors'][] = $v;
    }
    return $return;
}
于 2013-03-12T22:31:36.493 に答える