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 に答える