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 回答