使用'&';PHP中的问题

使用'&';PHP中的问题,php,arrays,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)

我有这样一个数组:

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"]=>
有没有办法解决这个问题

您只需执行以下操作:

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

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

您只需执行以下操作:

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

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


您可以通过使用第三个
$index\u键
参数调用
数组列
来完成此操作:

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

请参见

您可以使用第三个
$index\u键
参数对
数组列
进行一次调用:

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

请参见

$key
是参考,因此您的问题是您仍然在循环中处理
$data
,错误在于,您只需使用新的键向数组添加一个新元素。您不会删除旧的。在oyur循环结束时,数组中的entries应该是原来的两倍。但是,具有正确键的数组应该已经丢失了其内部数组键,因为您在内部ekys上调用
array\u values()
,这毫无意义。
$key
是引用,所以您的问题是您仍然在循环中寻址
$data
,只需使用新键向数组中添加新元素。您不会删除旧的。在oyur循环结束时,数组中的entries应该是原来的两倍。但是,具有正确键的数组应该已经丢失了其内部数组键,因为您在内部ekys上调用
array\u values()
,这毫无意义。