Преобразовать массив элементов верхнего уровня массива? - PullRequest
1 голос
/ 08 апреля 2011

Массив $ 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 ]

4 голосов
/ 08 апреля 2011
$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 голос
/ 08 апреля 2011
$x2 = array();
$i  = 0;
foreach ( $x1 as $data ) {
    if ( empty($x2['A']) ) {
        $x2['A'] = array();
    }

    $x2['A'][ array_shift($data) ] = $data;
}
0 голосов
/ 08 апреля 2011

Вот как бы я поступил по этому поводу.Не лучшим образом, но работает нормально.

$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;
}
0 голосов
/ 08 апреля 2011

пожалуйста, попробуйте это

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];
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...