[英]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.