根据PHP的值重构php中的多维数组

时间:2012-04-27 09:54:54

标签: php arrays

我有一个像这样的多维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)
     )

  )         

1 个答案:

答案 0 :(得分: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