簡體   English   中英

是否有標准的PHP函數用於將關聯數組元素傳輸到另一個關聯數組

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

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