4

私は配列を持っています:

[['a', 1], ['b', 1], ['c',2], ['d',2]]

次のように、2 番目の列の値に基づいてサブ配列をグループ化するにはどうすればよいですか。

[[['a', 1], ['b', 1]], [['c',2], ['d',2]]]

これを foreach で解決するアイデアはありますが、組み込み関数を使用する方法があるのでしょうか?

foreach でスケッチします。

$in = [['a', 1], ['b', 1], ['c',2], ['d',2]];
$out = [];

foreach($in as $i) {
    $out[$i[1]][] = $i;
}
4

3 に答える 3

1

あなたは多かれ少なかれ、私が解決策として到達したであろうものを持っています.

インデックスとして使用するデータが常に配列内の同じ位置にある限り、コレクター配列で行ったようにインデックスをハードコーディングできます。

そうでない場合は、連想配列に移動して、配列を作成するときにインデックスとして使用する値に名前を割り当てることを考えます。

[['a', 'index'=>1] [etc...]]

$out[$i[index]][] = $i;
于 2012-04-10T16:28:52.423 に答える
-1

多次元配列に固有の唯一の PHP ビルトインは のようですarray_multisort。これは、入力配列内に含まれるデータについて行うことができる仮定がない限り、あまり役に立ちません。

小さなデータセットの場合、ブルートフォースの例は私には問題ないようです。

于 2012-04-10T16:30:46.783 に答える