Hướng dẫn how to replace array keys in php? - làm cách nào để thay thế các khóa mảng trong php?

Nếu bạn đang tìm kiếm một giải pháp đệ quy để sử dụng trên một mảng đa chiều, hãy xem phương thức dưới đây. Nó sẽ thay thế tất cả các phím được yêu cầu, và để lại tất cả các phím khác một mình.

/**
 * Given an array and a set of `old => new` keys,
 * will recursively replace all array keys that
 * are old with their corresponding new value.
 *
 * @param mixed $array
 * @param array $old_to_new_keys
 *
 * @return array
 */
function array_replace_keys[$array, array $old_to_new_keys]
{
    if[!is_array[$array]]{
        return $array;
    }

    $temp_array = [];
    $ak = array_keys[$old_to_new_keys];
    $av = array_values[$old_to_new_keys];

    foreach[$array as $key => $value]{
        if[array_search[$key, $ak, true] !== false]{
            $key = $av[array_search[$key, $ak]];
        }

        if[is_array[$value]]{
            $value = array_replace_keys[$value, $old_to_new_keys];
        }

        $temp_array[$key] = $value;
    }

    return $temp_array;
}

Sử dụng mảng ví dụ của OP:

$old = array[
       'a' => 'blah',
       'b' => 'key',
       'c' => 'amazing',
       'd' => array[
                0 => 'want to replace',
                1 => 'yes I want to'
              ]
       ];
$replace = ["a" => "AA", 1 => 11];

var_export[array_replace_keys[$old, $replace]];

Cung cấp đầu ra sau:

array [
  'AA' => 'blah',
  'b' => 'key',
  'c' => 'amazing',
  'd' => 
  array [
    0 => 'want to replace',
    11 => 'yes I want to',
  ],
]

THỬ NGHIỆM

Lấy cảm hứng từ đoạn trích sau đây.

Kiểm tra mã: Các khóa mảng trùng lặp báo cáo các khóa trùng lặp trong các khai báo mảng. Nếu nhiều yếu tố trong khai báo mảng sử dụng cùng một khóa, chỉ có phần cuối cùng sẽ được sử dụng và tất cả các phần tử khác sẽ bị ghi đè.

Bạn có thể thay đổi khóa Array quá dễ dàng nhưng thực hiện nó mà không cần & nbsp; Thay đổi thứ tự trong PHP là khá khó khăn. Chỉ cần gán giá trị cho một khóa mới và xóa cái cũ không thay đổi vị trí của khóa mới tại & nbsp; vị trí cũ trong mảng.

Vì vậy, trong bài viết này, tôi đã giải thích 3 cách để cho phép bạn thay đổi khóa mảng trong khi vẫn duy trì thứ tự chính và một trong số chúng cũng có thể được sử dụng với một mảng đa chiều. Nhưng trước đó, nếu bạn chỉ cần đổi tên khóa mà không cần bảo quản đơn hàng, mã hai dòng sẽ thực hiện công việc:

$arr[$newkey]=$arr[$oldkey];arr[$newkey]=$arr[$oldkey];

unset[$arr[$oldkey]];[$arr[$oldkey]];

  • Câu hỏi phỏng vấn PHP.
  • Chuyển đổi A & nbsp; mảng đa chiều sang đối tượng.

1. Thay đổi phím mảng bằng cách sử dụng & nbsp; json mã hóa/giải mã

functionjson_change_key[$arr,$oldkey,$newkey]{json_change_key[$arr,$oldkey,$newkey]{

$json=str_replace['"'.$oldkey.'":','"'.$newkey.'":',json_encode[$arr]];json= str_replace['"'.$oldkey.'":','"'.$newkey.'":',json_encode[$arr]];

returnjson_decode[$json]; json_decode[$json];

}

Nó ngắn nhưng hãy cẩn thận trong khi sử dụng nó. Chỉ sử dụng để thay đổi khóa khi bạn chắc chắn rằng mảng của bạn không chứa giá trị giống hệt như khóa cũ cộng với một dấu hai chấm. Mặt khác, giá trị & nbsp; hoặc giá trị đối tượng cũng sẽ được thay thế.

2. Thay thế phím & duy trì thứ tự bằng các hàm mảng trong PHP

functionreplace_key[$arr,$oldkey,$newkey]{replace_key[$arr,$oldkey,$newkey]{

if[array_key_exists[$oldkey,$arr]]{[array_key_exists[$oldkey, $arr]]{

$keys=array_keys[$arr];keys=array_keys[$arr];

& nbsp; & nbsp; & nbsp; & nbsp; $ khóa [Array_Search [$ OldKey, $ Keys]] = $ newKey;$keys[array_search[$oldkey, $keys]]=$newkey;

& nbsp; & nbsp; & nbsp; & nbsp; returnArray_combine [$ keys, $ mảng];returnarray_combine[$keys,$arr];

}

    return$arr;    return $arr;    

}

Nó ngắn nhưng hãy cẩn thận trong khi sử dụng nó. Chỉ sử dụng để thay đổi khóa khi bạn chắc chắn rằng mảng của bạn không chứa giá trị giống hệt như khóa cũ cộng với một dấu hai chấm. Mặt khác, giá trị & nbsp; hoặc giá trị đối tượng cũng sẽ được thay thế.

2. Thay thế phím & duy trì thứ tự bằng các hàm mảng trong PHP

& nbsp; & nbsp; & nbsp; & nbsp; $ khóa [Array_Search [$ OldKey, $ Keys]] = $ newKey;

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

& nbsp; & nbsp; & nbsp; & nbsp; returnArray_combine [$ keys, $ mảng];

Hàm ____ lần đầu tiên kiểm tra xem khóa cũ có tồn tại trong mảng & nbsp; không? Nếu có thì hãy tạo một mảng các phím được lập chỉ mục từ mảng nguồn và thay đổi khóa cũ bằng mới sử dụng chức năng PHP & NBSP; Array_Search [].

functionrecursive_change_key[$arr,$set]{recursive_change_key[$arr,$set]{

Cuối cùng, hàm mảng_combine [] trả về a & nbsp; mảng mới & nbsp; với khóa thay đổi, lấy các khóa từ mảng và giá trị được lập chỉ mục được tạo từ mảng nguồn. & Nbsp; không tồn tại & nbsp; của khóa cũ chỉ đơn giản là trả về mảng mà không cần thay đổi.if [is_array[$arr]&& is_array[$set]] {

3. Thay đổi phím mảng mà không thay đổi thứ tự [có khả năng mảng đa chiều]

// $ arr => mảng gốcforeach[$arr as$k=>$v] {

// $ set => mảng chứa các phím cũ dưới dạng khóa và khóa mới làm giá trị$key=array_key_exists[$k,$set]?$set[$k]: $k;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbs$newArr[$key]=is_array[$v]?recursive_change_key[$v, $set]:$v;

& nbsp; & nbsp; & nbsp; & nbsp; $ newarr = mảng [];}

& nbsp; & nbsp; & nbsp; & nbsp; foreach [$ mảng là $ k => $ v] {return$newArr;

& nbsp; & nbsp; & nbsp; & nbsp; $ newarr = mảng [];}

& nbsp; & nbsp; & nbsp; & nbsp; foreach [$ mảng là $ k => $ v] {return$arr;    

    }}

    $ppl=array[$ppl=array[

        'jack'=>array['address_2'=>'London','country'=>'UK'],'jack'=>array['address_2'=>'London','country' =>'UK'],

        'jill'=>array['address_2'=>'Washington','country'=>'US']'jill'=>array['address_2'=>'Washington','country'=>'US']

    ];];

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ key = mảng_key_Exists [$ k, $ set]? $ set [$ k]: $ k;$people=recursive_change_key[$ppl,array['jill'=>'john','address_2'=>'city']];

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ newarr [$ key] = is_array [$ v]? recursive_change_key [$ v, $ set]: $ v;print_r[$people];

& nbsp; & nbsp; & nbsp; & nbsp; }

& nbsp; & nbsp; & nbsp; & nbsp; trả lại $ newarr;

Output:

& nbsp; & nbsp; & nbsp; & nbsp; trả về $ mảng; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; $ people = recursive_change_key [$ ppl, mảng ['jill' => 'john', 'địa chỉ_2' => '' thành phố ']];

& nbsp; & nbsp; print_r [$ people];

        [

/*

====================================

        ]

Mảng

        [

.

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

        ]

]

*/

Giải pháp này khá thanh lịch & nbsp; và cũng có thể làm việc với mảng đa chiều với sự trợ giúp của vòng lặp PHP cổ điển và gọi lại & nbsp; gọi. Hãy để xem chúng ta đang thực hiện thay đổi này như thế nào.can work with multidimensional array too with help of classic PHP loop and recursive function call. Let’s see how are we doing this change.

Ở đây chúng ta cần vượt qua hai mảng trong cuộc gọi chức năng [dòng #20]. Tham số đầu tiên là mảng cần thay đổi các khóa và một mảng khác là một mảng chứa các chỉ mục dưới dạng các khóa và giá trị cũ như các khóa mới. Sau khi thực hiện, chức năng sẽ thay đổi tất cả các khóa trong mảng đầu tiên có trong mảng thứ hai và các giá trị tương ứng của chúng cũng sẽ là các khóa mới.

Cuộc gọi đệ quy trong hàm đảm bảo thay đổi các khóa lên đến & nbsp; nhánh sâu nhất của mảng. Chức năng này ở đây được cung cấp cùng với ví dụ để hiểu rõ hơn.

Don Tiết quên đọc danh sách rộng rãi của chúng tôi gồm 38 hướng dẫn liên quan đến PHP.

Vì vậy, ở đây bạn có 3 cách để thay đổi khóa mảng mà không thay đổi thứ tự mảng trong PHP. Và cái cuối cùng cũng hoạt động với một mảng đa chiều là tốt. Tất cả những gì bạn cần chỉ là để cung cấp bộ chính xác của khóa cũ, các cặp khóa mới để thay đổi mục đích.

Làm thế nào tôi có thể thay thế giá trị của một khóa cụ thể trong một mảng trong PHP?

Hàm mảng_Rpace [] thay thế các giá trị của mảng đầu tiên bằng các giá trị từ các mảng sau.Mẹo: Bạn có thể gán một mảng cho hàm hoặc bao nhiêu tùy thích.Nếu một khóa từ Array1 tồn tại trong Array2, các giá trị từ Array1 sẽ được thay thế bằng các giá trị từ Array2. replaces the values of the first array with the values from following arrays. Tip: You can assign one array to the function, or as many as you like. If a key from array1 exists in array2, values from array1 will be replaced by the values from array2.

Array_Keys [] được sử dụng trong PHP là gì?

Array_Keys [] là một hàm tích hợp trong PHP và được sử dụng để trả về tất cả các khóa và mảng hoặc tập hợp con của các khóa.Tham số: Hàm lấy ba tham số trong đó một tham số là bắt buộc và hai tham số khác là tùy chọn.to return either all the keys of and array or the subset of the keys. Parameters: The function takes three parameters out of which one is mandatory and other two are optional.

Một mảng PHP có thể có các khóa trùng lặp?

Kiểm tra mã: Các khóa mảng trùng lặp báo cáo các khóa trùng lặp trong các khai báo mảng.Nếu nhiều yếu tố trong khai báo mảng sử dụng cùng một khóa, chỉ có phần cuối cùng sẽ được sử dụng và tất cả các phần tử khác sẽ bị ghi đè.Reports duplicate keys in array declarations. If multiple elements in the array declaration use the same key, only the last one will be used, and all others will be overwritten.

Bài Viết Liên Quan

Chủ Đề