Php thay đổi tên khóa trong mảng kết hợp

If you don't want to lose duplicates, and you're ok, with having the values in the flipped array in an array as well, you may use this:

PHP 7.4 - ^8

function array_flip_safe[array $array] : array
{
    return array_reduce[array_keys[$array], function [$carry, $key] use [&$array] {
        $carry[$array[$key]] ??= [];
        $carry[$array[$key]][] = $key;
        return $carry;
    }, []];
}

?>

PHP 7.0 - ^7.3 [Time to upgrade to PHP 8 ^^]

function array_flip_safe[array $array] : array
{
    return array_reduce[array_keys[$array], function [$carry, $key] use [&$array] {
        $carry[$array[$key]] = $carry[$array[$key]] ?? [];
        $carry[$array[$key]][] = $key;
        return $carry;
    }, []];
}

?>

PHP 5.4 - ^5.6 [Just don't]

________số 8

?>

PHP 7.4 - ^80

PHP 7.4 - ^81

PHP 7.4 - ^82

?>

PHP 7.4 - ^84

PHP 7.4 - ^85

PHP 7.4 - ^86

PHP 7.4 - ^87

PHP 7.4 - ^88

PHP 7.4 - ^89

function array_flip_safe[array $array] : array
{
    return array_reduce[array_keys[$array], function [$carry, $key] use [&$array] {
        $carry[$array[$key]] ??= [];
        $carry[$array[$key]][] = $key;
        return $carry;
    }, []];
}
0

function array_flip_safe[array $array] : array
{
    return array_reduce[array_keys[$array], function [$carry, $key] use [&$array] {
        $carry[$array[$key]] ??= [];
        $carry[$array[$key]][] = $key;
        return $carry;
    }, []];
}
1

function array_flip_safe[array $array] : array
{
    return array_reduce[array_keys[$array], function [$carry, $key] use [&$array] {
        $carry[$array[$key]] ??= [];
        $carry[$array[$key]][] = $key;
        return $carry;
    }, []];
}
2

function array_flip_safe[array $array] : array
{
    return array_reduce[array_keys[$array], function [$carry, $key] use [&$array] {
        $carry[$array[$key]] ??= [];
        $carry[$array[$key]][] = $key;
        return $carry;
    }, []];
}
3

function array_flip_safe[array $array] : array
{
    return array_reduce[array_keys[$array], function [$carry, $key] use [&$array] {
        $carry[$array[$key]] ??= [];
        $carry[$array[$key]][] = $key;
        return $carry;
    }, []];
}
4

Bạn có thể thay đổi khóa mảng quá dễ dàng nhưng thực hiện việc đó mà không thay đổi thứ tự trong PHP thì khá khó. Việc chỉ gán giá trị cho khóa mới và xóa khóa cũ không làm thay đổi vị trí của khóa mới tại 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 giữ nguyên thứ tự khóa và cách cuối cùng cũng có thể được sử dụng với mảng nhiều chiều. Nhưng trước đó, nếu bạn chỉ cần đổi tên một khóa mà không giữ nguyên thứ tự, mã hai dòng sẽ thực hiện công việc

Đổi tên khóa mảng mà không giữ nguyên thứ tự

0

1

2

 

$arr[$khóa mới] = $arr[$oldkey];

bỏ đặt[$mảng[$oldkey]];

  • Câu hỏi phỏng vấn PHP
  • Chuyển đổi một mảng nhiều chiều thành đối tượng

1. Thay đổi Khóa mảng bằng mã hóa/giải mã JSON

Thay đổi khóa mảng bằng cách sử dụng mã hóa/giải mã JSON

0

1

2

3

4

 

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

$json = str_replace['"'.$oldkey. '". ', '"'. $khóa mới. '". ', json_encode[$arr]];

return json_decode[$json];

}

Nó ngắn nhưng hãy cẩn thận 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 dấu hai chấm. Nếu không, giá trị hoặc giá trị đối tượng cũng sẽ bị thay thế

 

2. Thay thế khóa & Duy trì thứ tự bằng Hàm mảng trong PHP

0

1

2

3

4

5

6

7

8

 

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

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

$keys = array_keys[$arr];

     $phím[array_search[$oldkey, $keys]] = $newkey;

    return array_combine[$keys, $arr];

}

    return $arr;    

}

Đầu tiên, hàmfunction array_flip_safe[array $array] : array
{
    return array_reduce[array_keys[$array], function [$carry, $key] use [&$array] {
        $carry[$array[$key]] ??= [];
        $carry[$array[$key]][] = $key;
        return $carry;
    }, []];
}
5 kiểm tra xem khóa cũ có tồn tại trong mảng không?

Cuối cùng, hàm array_combine[] trả về một mảng mới với khóa đã thay đổi, lấy các khóa từ mảng được lập chỉ mục đã tạo và các giá trị từ mảng nguồn. Sự không tồn tại của khóa cũ chỉ đơn giản là trả về mảng mà không có bất kỳ thay đổi nào

 

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

Đổi key mảng - mảng nhiều chiều

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

 

//$arr => mảng ban đầu

//$set => mảng chứa các khóa cũ làm khóa và khóa mới làm giá trị

hàm recursive_change_key[$arr, $set] {

        if [is_array[$arr] && is_array[$set]] {

$newArr = mảng[];

     foreach [$arr as $k => $v] {

         $key = array_key_exists[ $k, $set] ? $set[$k] : $k;

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

     }

     return $newArr;

     }

     return $arr;    

    }

 

    $ppl = mảng[

        'jack' = > mảng['address_2' => 'London', 'country' => 'UK'],

        'jill' = > mảng['address_2' => 'Washington', 'country' => 'US']

    ];

  

   $người = recursive_change_key[$ppl, array['jill' => 'john', 'address_2' => 'city']];

  

   print_r[$người];

 

 

/*

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

đầu ra

Mảng

[

[jack] => Mảng

[

[thành phố] => Luân Đôn

[quốc gia] => Vương quốc Anh

]

 

[john] => Mảng

[

[thành phố] => Washington

[quốc gia] => Mỹ

]

 

]

*/

Giải pháp này khá tinh tế và cũng có thể hoạt động với mảng nhiều chiều với sự trợ giúp của lệnh gọi hàm đệ quy và vòng lặp PHP cổ điển. Hãy xem chúng ta đang thực hiện thay đổi này như thế nào

Ở đây chúng ta cần truyền hai mảng trong lệnh gọi hàm [Dòng #20]. Tham số đầu tiên là mảng cần thay đổi khóa và tham số khác là mảng chứa các chỉ mục là khóa cũ và giá trị là khóa mới. Khi thực hiện, hàm sẽ thay đổi tất cả các khóa trong mảng đầu tiên cũng có trong mảng thứ hai và các giá trị tương ứng của chúng sẽ là các khóa mới

Hàm gọi đệ quy bên trong đảm bảo thay đổi các khóa cho đến nhánh sâu nhất của mảng. Hàmfunction array_flip_safe[array $array] : array
{
    return array_reduce[array_keys[$array], function [$carry, $key] use [&$array] {
        $carry[$array[$key]] ??= [];
        $carry[$array[$key]][] = $key;
        return $carry;
    }, []];
}
6 ở đây được cung cấp cùng với ví dụ để hiểu rõ hơn

Đừng quên đọc danh sách đầy đủ 38 hướng dẫn liên quan đến PHP của chúng tôi

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

Làm cách nào để thay đổi giá trị khóa trong mảng kết hợp PHP?

Chỉ cần ghi lại giá trị cũ, sử dụng unset để xóa nó khỏi mảng rồi thêm nó bằng khóa mới và cặp giá trị cũ. Save this answer.

Làm cách nào để đổi tên khóa trong mảng PHP?

Hoặc bạn chỉ có thể sử dụng array_map[$tags,create_function['$tag','return array[ "name" => $tag["name"], "value" => $tag["url"]']]; . .
Điều đó trở nên lộn xộn khi bạn đổi tên một cách có hệ thống. Ngoài ra, create_function sử dụng eval, điều này rõ ràng là nên tránh nếu có thể. .
tại sao quá phức tạp không cần thiết?

Làm cách nào để thay đổi khóa chỉ mục của một mảng trong PHP?

Chúng ta sẽ dùng hàm array_values[] để lấy tất cả các giá trị của mảng và hàm range[] để tạo một mảng các phần tử mà chúng ta muốn sử dụng làm khóa mới hoặc khóa mới. . Sau đó, hàm array_combine[] sẽ kết hợp cả mảng dưới dạng khóa và giá trị. . Then the array_combine[] function will combine both the array as keys and values.

Khóa trong mảng kết hợp trong PHP là gì?

Ví dụ. Trong mảng liên kết trong PHP, hàm keys[] của mảng được dùng để tìm các chỉ số có tên được cung cấp cho chúng và hàm đếm[] được dùng để .

Chủ Đề