Home  >  Article  >  Backend Development  >  How to merge two-dimensional arrays in php without changing key values

How to merge two-dimensional arrays in php without changing key values

PHPz
PHPzOriginal
2023-04-26 09:07:46836browse

In PHP, array is a very important data structure that can be used in many scenarios. Two-dimensional array is one of them, usually used to store data such as tables or matrices. In actual development, you may encounter situations where you need to merge two or more two-dimensional arrays into a new two-dimensional array. However, if you directly use PHP's own array_merge function to merge, a problem will arise: the merged key values ​​will change. So, let’s discuss how to merge two-dimensional arrays without changing the key values.

Understand the structure of two-dimensional arrays

In PHP, a two-dimensional array is actually an array containing multiple one-dimensional arrays. Each one-dimensional array is a subarray in which multiple key-value pairs can be stored. For example, the following is a two-dimensional array containing two sub-arrays:

$array = [
    [
        'name' => 'John',
        'age' => 25,
    ],
    [
        'name' => 'Mary',
        'age' => 30,
    ],
];

It can be seen that each sub-array represents a person's information, where name and age is the key, and the corresponding values ​​are the person's name and age. In actual development, many operations need to be performed on data of this structure, such as sorting, filtering, merging, etc. of arrays.

Use the array_merge function to merge two-dimensional arrays

In PHP, there are many ways to merge arrays, among which using the array_merge function is a common method. This function can merge multiple arrays into a new array, and the merged key values ​​will be automatically reordered. The following is an example of using the array_merge function to merge two two-dimensional arrays:

$array1 = [
    [
        'name' => 'John',
        'age' => 25,
    ],
];

$array2 = [
    [
        'name' => 'Mary',
        'age' => 30,
    ],
];

$array = array_merge($array1, $array2);

var_dump($array);

The output result is:

array(2) {
  [0]=>
  array(2) {
    ["name"]=>
    string(4) "John"
    ["age"]=>
    int(25)
  }
  [1]=>
  array(2) {
    ["name"]=>
    string(4) "Mary"
    ["age"]=>
    int(30)
  }
}

It can be seen that the merged array follows the original The order is reordered and the key values ​​are reassigned because the array_merge function will use the key values ​​of all arrays as the keys of the new array, and the values ​​of the new keys are the values ​​in the original array. If there are duplicate key values ​​in the original array, the subsequent array will overwrite the values ​​in the previous array. This behavior is undesirable in many scenarios, because the key values ​​​​of the original array may contain important information, and reordering or overwriting may lead to data errors. So, is there a way to preserve the key values ​​of the original array?

Use the array_replace_recursive function to merge two-dimensional arrays

array_replace_recursive function is another array merging method that comes with PHP, and is different from the array_merge function Yes, it preserves the key values ​​of the original array rather than reordering or overwriting. In addition, the array_replace_recursive function also supports recursive merging of arrays and can handle the merging of multi-dimensional arrays. The following is an example of using the array_replace_recursive function to merge two two-dimensional arrays:

$array1 = [
    [
        'name' => 'John',
        'age' => 25,
    ],
];

$array2 = [
    [
        'name' => 'Mary',
        'age' => 30,
    ],
];

$array = array_replace_recursive($array1, $array2);

var_dump($array);

The output result is:

array(1) {
  [0]=>
  array(2) {
    ["name"]=>
    string(4) "Mary"
    ["age"]=>
    int(30)
  }
}

As you can see, the merged array retains the original array keys and order, rather than changing their order or overwriting their values. In addition, the array_replace_recursive function also supports merging multi-dimensional arrays, making processing more convenient. However, it should be noted that when merging arrays recursively, if the structures of the arrays are inconsistent, the results may be abnormal, so special attention is required.

Summary

In PHP, two-dimensional array is one of the common data structures. In actual development, you may encounter situations where you need to merge two or more two-dimensional arrays into a new two-dimensional array. If you directly use PHP's own array_merge function to merge, the array may be reordered or the key values ​​may be overwritten. In order to maintain the key values ​​and order of the original array, you can use the array_replace_recursive function to merge arrays. In addition, the array_replace_recursive function also supports recursive merging of arrays, which is very convenient. However, it should be noted that when merging arrays recursively, special attention needs to be paid to the structure of the array to avoid abnormal situations.

The above is the detailed content of How to merge two-dimensional arrays in php without changing key values. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn