0

配列の変換に問題があります。私はこの配列を持っています:

 Array
  (
   [0] => Array
    (
        [x] => 1291
        [y] => 32
        [z] => 1142
        [number] => 51
    )

   [1] => Array
    (
        [x] => 1415
        [y] => 32
        [z] => 1142
        [number] => 22
    )
)

これから、配列を作る方法

 Array
  (
   [51] => Array
    (
        [x] => 1291
        [y] => 32
        [z] => 1142
    )

   [22] => Array
    (
        [x] => 1415
        [y] => 32
        [z] => 1142
    )

)

[number] を配列から削除する必要はありません。鍵になることが重要です。

4

4 に答える 4

2
$numbers = array();
//Get the list of 'number' keys and unset them (optional)
foreach ($array as &$values) {
   $numbers[] = $values['number'];
   unset($values['number']);
}
//create a new array with numbers as keys and the original array as values
//You could also overwrite the original array, which will save some memory
$result = array_combine($numbers, $array);
于 2012-12-18T19:06:34.363 に答える
1

新しい配列を作成できます

$newarray = array();
foreach($yourarray as $k=>$v) {
    $newarray[$v['number']] = $v
}

print_r($newarray);
于 2012-12-18T19:06:30.773 に答える
1

元の配列を単純にループすると、これが修正されます。

$new = array();

foreach($old as $item) {
    $key = $item['number'];
    $new[$key] = $item;
}

var_dump($new);
于 2012-12-18T19:06:55.190 に答える
1

他の多くの回答が示唆するように、新しい配列を作成する必要はありません。これはインプレースで行うことができます。

foreach ($array as $key => $value)
{
    $array[$value["number"]] = $array[$key];

    // remove number attribute (optional)
    unset($array[$value["number"]]["number"]);

    // remove array @ original key
    unset($array[$key]);
}
于 2012-12-18T19:09:26.070 に答える