[英]PHP rename key in Associative array
我一直在搜索关于这个问题的 SO 文章,并在我自己的代码中尝试了许多解决方案,但似乎没有用。
我有以下数组
$array[] = array("Order_no"=>$order_id,
"Customer"=>$customer_id,
"Product"=>$code_po,
"Product_description"=>$code_description,
"Position"=>$pos,
"Qty"=>$item_qty
);
我想用数据库查询中的变量替换“Order_no”键,假设在这种情况下变量是“new_name”
$new = "new_name";
$array[$new]=$array["Order_no"];
unset($array["Order_no"]);
print_r($array);
在 print_r 语句中,我得到 new_name 作为正确的订单号,但我仍然在那里看到“Order_no”,我不应该再看到它了。
谢谢。
这是你的数组:
Array
(
[0] => Array
(
[Customer] => 2
[Product] => 99
[Order_no] => 12345
)
)
一种方法:
<?php
$arr[] = [
"Order_no" => 12345,
"Customer" => 00002,
"Product"=> 99
];
$i_arr = $arr[0];
$i_arr["new_name"] = $i_arr["Order_no"];
unset($i_arr["Order_no"]);
$arr[0] = $i_arr;
print_r($arr);
其它的办法:
<?php
$arr[] = [
"Order_no" => 12345,
"Customer" => 00002,
"Product"=> 99
];
$arr[0]["new_name"] = $arr[0]["Order_no"];
unset($arr[0]["Order_no"]);
print_r($arr);
随时展平您的阵列:
<?php
$arr = $arr[0];
print_r($arr);
您正在使用额外级别的数组(通过执行$array[] = ...
)。
您应该使用[0]
作为第一个索引:
$array[0][$new]=$array[0]["Order_no"];
unset($array[0]["Order_no"]);
现场示例: 3v4l
另一种选择是摆脱这个额外的级别并将数组初始化为:
$array = array("Order_no"=>$order_id, ...
由于$array
也是一个数组,你必须使用索引:
$array[0][$new]=$array[0]["Order_no"];
unset($array[0]["Order_no"]);
其他答案将在您第一次添加到数组时起作用,但它们始终适用于数组中的第一项。 一旦添加另一个它将不起作用,因此获取当前密钥:
$array[key($array)][$new] = $array[key($array)]["Order_no"];
unset($array[key($array)]["Order_no"]);
如果你想要第一个,然后调用reset($array);
第一的。
将您的变量更改为
$array=array("Order_no"=>$order_id,"Customer"=>$customer_id,"Product"=>$code_po,"Product_description"=>$code_description,"Position"=>$pos,"Qty"=>$item_qty);
或将您的代码更改为
$new = "new_name";
$array[0][$new]=$array[0]["Order_no"];
unset($array["Order_no"]);
print_r($array);
请注意这会改变数组的顺序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.