2

我真的被困在我项目的某个点上。我正在尝试将二维数组转换为三维数组。目前我在这一点上:

array (size=4)
  0 => 
    array (size=4)
      0 => string 'foo' (length=3)
      1 => string 'a' (length=0)
      2 => string 'b' (length=0)
      3 => string '0' (length=1)
  1 => 
    array (size=4)
      0 => string 'bar' (length=3)
      1 => string 'a' (length=0)
      2 => string 'b' (length=0)
      3 => string '1' (length=1)
  2 => 
    array (size=4)
      0 => string 'bas' (length=3)
      1 => string 'a' (length=0)
      2 => string 'b' (length=0)
      3 => string '1' (length=1)
  3 => 
    array (size=4)
      0 => string 'tas' (length=3)
      1 => string 'a' (length=0)
      2 => string 'b' (length=0)
      3 => string '0' (length=1)

我想做的是用 array[ ][3] 的键值创建一个新数组(我希望这有意义)所以是这样的:

array (size=2)
    0 => array (size=2)
        0 => array (size=2)
                   0 => string 'foo' (length=3)
                   1 => string 'a' (length=0)
                   2 => string 'b' (length=0)
        1 => array (size=2)
                   0 => string 'tas' (length=3)
                   1 => string 'a' (length=0)
                   2 => string 'b' (length=0)
    1 => array (size=2)
        0 => array (size=2)
                   0 => string 'bar' (length=3)
                   1 => string 'a' (length=0)
                   2 => string 'b' (length=0)
        1 => array (size=2)
                   0 => string 'bas' (length=3)
                   1 => string 'a' (length=0)
                   2 => string 'b' (length=0)

现在这是我能解释它的最好方式,我不确定我是否有任何意义,或者这是否可能,但如果有人能阐明这一点,我将不胜感激!

提前致谢,

托马斯

4

1 回答 1

1
$array = array();
$array[] = array('foo','foo','foo',1);
$array[] = array('a','a','a',1);
$array[] = array('b','a','a',0);
$array[] = array('c','a','a',0);
$new_array =group_by_sub_array_key($array,3);
print_r($new_array);


function group_by_sub_array_key($array,$kn){
$new_array = array();
foreach($array AS $v){
    $key=$v[$kn];
    if(!array_key_exists($v[$kn],$new_array)){
    $new_array[$key]=array();
    }
    unset($v[$kn]);
    $new_array[$key][] = $v;
}

return $new_array;
}
于 2013-04-27T02:34:06.293 回答