2

私はこのような多次元php配列を持っています:

ここで、列「b」には2つの可能な値(x、y)があり、列「v」には2つの可能な値(t、f)があります

Array
(
[0] => Array
    (
        [a] => 6
        [b] => x
        [c] => t
    )

[1] => Array
    (
        [a] => 4
        [b] => x
        [c] => t
    )
[2] => Array
    (
        [a] => 6
        [b] => y
        [c] => f
    )

次のように、値で構造化されるように列を再配置したいと思います。

私の質問は、すべてをループせずに、いくつかのネイティブphp関数を使用してこれを行うスマートな方法はありますか?

Array(
    [value of b=x] => Array(
        [value of c=t] => Array( all ids in the array)
        [value of c=f] => Array( all ids in the array)
     )
    [value of b=y] => Array(
        [value of c=t] => Array( all ids in the array)
        [value of c=f] => Array( all ids in the array)
     )

  )         
4

1 に答える 1

2

all ids in the array「配列内のすべてのa列の値」を意味していると思います。その場合、これはあなたが望むものです:

$result = array();

array_walk($array, function($val, $key) use (&$result) {
  $result[$val['b']][$val['c']][] = $val['a'];
});

print_r($result);

ids外側の配列インデックスを意味する場合は、上記のコードを に変更$val['a']するだけです。$key

于 2012-04-27T10:10:25.260 に答える