[英]is there a standard PHP function for transfering an associative array elements to another associative array
是否有一個標准的PHP函數可以更改關聯數組的索引名稱?
$a1 = array('one'=>1,'two'=>2,'three'=>3);
$new_index_names = array('one'=>'ono','two'=>'dos','three'=>'tres');
$a2 = change_index_names($a1,$new_index_names);
print_r($a2);
// $a2 should have the index names changed accordingly and look like this:
// array('ono'=>1,'dos'=>2,'tres'=>3)
編輯請注意,該功能需要知道到新索引名稱的映射。 意思是,在$ new_index_names數組中提供了映射。 因此,再次需要知道“ ono”是“ one”的新索引名稱。
編輯我知道你們可以提出自己的解決方案,我想知道已經有一個標准的PHP函數可以做到這一點。
編輯
在幾種情況下,更改索引名稱會有所幫助:1)將后值名稱分隔為通用名稱/內部名稱,以便您可以進行分隔
前端代碼中的后端代碼。
2)例如,假設您有兩個來自post的數組,它們需要經歷相同的確切過程,除了兩個數組,盡管均值/包含相同的確切類型的值/順序/結構,但它們的索引名稱不同。 因此,當傳遞給僅包含一組索引名稱的函數/方法時,您需要先轉換索引名稱,然后再將其傳遞給該函數/方法。
您不需要array_values
要獲得所需的輸出,您可以使用
array_combine($new_index_names,$a1);
不僅在1個函數中,還可以使用array_values
獲取第一個數組的值,並使用array_combine
設置新鍵
假設兩個數組的計數相等,一種方法是使用array_combine()
和array_values()
$a2 = array_combine(array_values($new_index_names), $a1);
先前的答案未考慮$a1
和$new_index_names
,因此我將解決方案放在以下位置:
$a1 = array('one' => 1, 'two' => 2, 'three' => 3, 'zero' => 0);
$new_index_names = array('zero' => 'zero', 'one' => 'ono', 'two' => 'dos', 'three' => 'tres');
array_combine(
$new_index_names,
str_replace(array_keys($a1), array_values($a1), array_keys($new_index_names))
);
Array
(
[zero] => 0
[ono] => 1
[dos] => 2
[tres] => 3
)
到目前為止,我看到的最好的答案是:
foreach ($a1 as $k => $v) $a2[$new_index_names[$k]] = $v;
學分歸jh1711
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.