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
    )

我想通过以下方式重新排列列,以便它们由 values 构成。

我的问题是,有没有一种聪明的方法可以使用一些本机 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 回答