变换数组上层数组元素?

时间:2011-04-08 07:47:03

标签: php arrays multidimensional-array

有一个$ x作为数组:

$x1 = array(
   0=>array("up1", -10, 1, 1, 2.5),
   19=>array("up2",-4, 1.2, 2, 0.5)
);

我希望转换$x1成为x2,如下所示:

     $x2 = Array(
    'A'=>
        array(
        "up1"=>array(-10, 1, 1, 2.5),
        "up2"=>array(-4, 1.2, 2, 0.5)
        )
      );

任何人都可以告诉我帮助算法这样做:?

4 个答案:

答案 0 :(得分:4)

$x2 = array();
foreach ($x1 as $x) {
    $key = array_shift($x);
    $x2['A'][$key] = $x;
}

或者,如果你想变得非常聪明:

$x2 = array();
foreach ($x1 as $x) {
    $x2['A'][array_shift($x)] = $x;
}

答案 1 :(得分:1)

$x2 = array();
$i  = 0;
foreach ( $x1 as $data ) {
    if ( empty($x2['A']) ) {
        $x2['A'] = array();
    }

    $x2['A'][ array_shift($data) ] = $data;
}

答案 2 :(得分:0)

请试一试

for ( $i = 0 ; $x1[$i] != NULL ; $i++ ) {
  $x1[$i] = 'a'=>($x1[$i]);
  for ( $j = 0 ; $x1[$i][$j] != NULL; $j++ ) {
    $x1[$i][$j] = 'up'.$j=> $x1[$i][$j];
  }
}

答案 3 :(得分:0)

以下是我如何去做。不是最好的方法,但它运作正常。

$x1 = array(
  0=>array("up1", -10, 1, 1, 2.5),
  19=>array("up2",-4, 1.2, 2, 0.5)
);

$x2 = array( 'A' => array() );

foreach($x1 as $current) {
  $key = $current[0];
  unset($current[0]);
  $x2['A'][$key] = $current;
}