使用'&'将数组值替换为数组键。 PHP中的问题

时间:2018-03-15 14:36:31

标签: php arrays

我有一个像:

这样的数组
array(4) {
  [0]=>
  array(34) {
    ["id"]=>
    int(6)
    ["order_reference"]=>
    string(9) "200123130"
    ["store_reference"]=>
....
  [1]
array(34) {
    ["id"]=>
    int(6)
    ["order_reference"]=>
    string(9) "20222220"
    ["store_reference"]=>
...

我想拥有这个数组:

array(4) {
  [200123130]=>
  array(34) {
    ["id"]=>
    int(6)
    ["order_reference"]=>
    string(9) "200123130"
    ["store_reference"]=>
....
  [20222220]
array(34) {
    ["id"]=>
    int(6)
    ["order_reference"]=>
    string(9) "20222220"
    ["store_reference"]=>
...

这就是我的尝试:

$i = 0;
    foreach ($data['data'] as &$key) {
        $data['data'][$key['order_reference']] = array_values($data['data'][$i]);
        $i++;
    }

但是我得到了一个更大的数组,从:

开始
array(9) {
  [0]=>
  &array(34) {
    ["id"]=>

任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您可以这样做:

$newarray = array_combine(array_column($orig, "order_reference"), $orig);
  • array_combine() - 使用一个数组作为键创建数组,另一个数组创建数值

  • array_column() - 返回输入数组中单个列的值

答案 1 :(得分:1)

您只需使用第三个array_column参数调用$index_key即可完成此操作:

$new = array_column($orig, null, 'order_reference');

请参阅https://eval.in/972672