簡體   English   中英

PHP 重命名關聯數組中的鍵

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM