使用'&';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()
,这毫无意义。