2011-08-24 70 views
3

可能重複:
In PHP, how do you change the key of an array element?如何更改此數組的數組鍵?

此數組

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [due_date] => 2011-09-23 
      [due_amount] => 10600.00 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [due_date] => 2011-10-23 
      [due_amount] => 10600.00 
     ) 

    [2] => Array 
     (
      [id] => 3 
      [due_date] => 2011-11-23 
      [due_amount] => 10600.00 
     ) 
) 

如何改變ID此數組中的U_ID

問候

+0

你到目前爲止嘗試過什麼,所以它節省了我們的時間來嘗試你已經嘗試過的東西? – RSM

回答

6
array_walk_recursive($array, 'changeIDkey'); 

function changeIDkey($item, &$key) 
{ 
    if ($key == 'id') $key = 'u_id'; 
} 

PHP手冊:array_walk_recursive

編輯

這不會對@salathe在下面的意見給了工作的原因所在。致力於替代品。

實際ANSWER

function changeIDkey(&$value,$key) 
{ 
    if ($value === "id") $value = "u_id"; 
} 

$new = array(); 
foreach ($array as $key => $value) 
{ 
    $keys = array_keys($value); 
    array_walk($keys,"changeIDkey"); 
    $new[] = array_combine($keys,array_values($value)); 
} 

var_dump($new); //verify 

哪裏$array是您的輸入數組。請注意,這隻適用於您當前的數組結構(二維,僅在第二維上更改鍵)。

循環遍歷內部數組,在鍵中將「id」更改爲「u_id」,然後將新鍵與舊值重新組合。

+0

注意'array_walk()'手冊頁上的註釋,這與'array_walk_recursive()'適用的一樣:*只有'array'的值可能會被改變;其結構不能改變,即程序員不能添加,取消設置或重新排序元素。如果回調不尊重這個要求,這個函數的行爲是不確定的,並且是不可預知的。* – salathe

+0

@salathe:是的,只是注意到了。致力於替代品。 –

+0

感謝您的回答 –

4
foreach($array as &$element) { 
    $element['u_id'] = $element['id']; 
    unset($element['id']); 
} 
+0

感謝您的答案,它似乎工作正常 –