如何在 PHP 中更改数组的键?

Ift*_*din 6 php arrays sorting

我有以下数组:

array(10) {
  [0]=>
  array(2) {
    ["id"]=>
    string(2) "73"
    ["position"]=>
    string(1) "1"
  }
  [1]=>
  array(2) {
    ["id"]=>
    string(2) "58"
    ["position"]=>
    string(1) "2"
  }
  [2]=>
  array(2) {
    ["id"]=>
    string(2) "82"
    ["position"]=>
    string(1) "3"
  }
  [3]=>
  array(2) {
    ["id"]=>
    string(2) "84"
    ["position"]=>
    string(1) "4"
  }
  [4]=>
  array(2) {
    ["id"]=>
    string(2) "74"
    ["position"]=>
    string(1) "5"
  }
  [5]=>
  array(2) {
    ["id"]=>
    string(2) "59"
    ["position"]=>
    string(1) "6"
  }
  [6]=>
  array(2) {
    ["id"]=>
    string(2) "72"
    ["position"]=>
    string(1) "7"
  }
  [7]=>
  array(2) {
    ["id"]=>
    string(2) "78"
    ["position"]=>
    string(1) "7"
  }
  [8]=>
  array(2) {
    ["id"]=>
    string(2) "77"
    ["position"]=>
    string(1) "8"
  }
  [9]=>
  array(2) {
    ["id"]=>
    string(2) "71"
    ["position"]=>
    string(1) "8"
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望数组的 索引替换为位置值。输出应如下所示:

array(10) {
  [1]=>
  array(2) {
    ["id"]=>
    string(2) "73"
    ["position"]=>
    string(1) "1"
  }
  [2]=>
  array(2) {
    ["id"]=>
    string(2) "58"
    ["position"]=>
    string(1) "2"
  }
  [3]=>
  array(2) {
    ["id"]=>
    string(2) "82"
    ["position"]=>
    string(1) "3"
  }
  [4]=>
  array(2) {
    ["id"]=>
    string(2) "84"
    ["position"]=>
    string(1) "4"
  }
  [5]=>
  array(2) {
    ["id"]=>
    string(2) "74"
    ["position"]=>
    string(1) "5"
  }
  [6]=>
  array(2) {
    ["id"]=>
    string(2) "59"
    ["position"]=>
    string(1) "6"
  }
  [7]=>
  array(2) {
    ["id"]=>
    string(2) "72"
    ["position"]=>
    string(1) "7"
  }
  [7]=>
  array(2) {
    ["id"]=>
    string(2) "78"
    ["position"]=>
    string(1) "7"
  }
  [8]=>
  array(2) {
    ["id"]=>
    string(2) "77"
    ["position"]=>
    string(1) "8"
  }
  [8]=>
  array(2) {
    ["id"]=>
    string(2) "71"
    ["position"]=>
    string(1) "8"
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了下面的代码,但它只打印数组中的一个元素:

$newarr = array();

$values = $this->request->get( 'values', null );

foreach ($values as $oldkey => $value) {
    $position = $value["position"];
    $newarr[$position] = $values[$oldkey];
    $values=$newarr;
    unset($newarr);
}
var_dump($values);exit;
Run Code Online (Sandbox Code Playgroud)

var_dump 结果$values

<br />
<b>Notice</b>:  Undefined offset: 8 in ResourcesController.php</b> 
<b>Notice</b>:  Undefined offset: 9 in ResourcesController.php</b> on line <b>367</b><br />
array(1) {
  [8]=>
  NULL
}`
Run Code Online (Sandbox Code Playgroud)

Rah*_*hul 5

array_column足以帮助你。

$result = array_column($yourarray, null, 'position');
Run Code Online (Sandbox Code Playgroud)

column_key要返回的值的列。该值可能是您希望检索的列的整数键,也可能是关联数组或属性名称的字符串键名称。它也可能是 NULL 返回完整的数组或对象(这与 index_key 一起用于重新索引数组很有用)。

句法

array_column ( array $input , mixed $column_key [, mixed $index_key = NULL ] ) : array
Run Code Online (Sandbox Code Playgroud)

工作演示