Maison >développement back-end >Problème PHP >Comment fusionner des tableaux bidimensionnels en php sans changer les valeurs des clés

Comment fusionner des tableaux bidimensionnels en php sans changer les valeurs des clés

PHPz
PHPzoriginal
2023-04-26 09:07:46853parcourir

En PHP, un tableau est une structure de données très importante qui peut être utilisée dans de nombreux scénarios. Le tableau bidimensionnel en fait partie, généralement utilisé pour stocker des données telles que des tableaux ou des matrices. Dans le développement réel, vous pouvez rencontrer des situations dans lesquelles deux ou plusieurs tableaux bidimensionnels doivent être fusionnés en un nouveau tableau bidimensionnel. Cependant, si vous utilisez directement la fonction array_merge de PHP pour fusionner, un problème surviendra : les valeurs des clés fusionnées changeront. Voyons donc comment fusionner des tableaux bidimensionnels sans modifier les valeurs clés. array_merge 函数进行合并,会出现一个问题:合并后的键值会改变。那么,下面就来探讨一下如何在不改变键值的情况下合并二维数组。

理解二维数组的结构

在 PHP 中,二维数组其实就是一个包含多个一维数组的数组。每个一维数组为一个子数组,可以在其中存储多个键值对。举个例子,下面是一个包含两个子数组的二维数组:

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

可以看出,每个子数组代表一个人的信息,其中 nameage 是键,对应的值分别是这个人的名字和年龄。在实际开发中,需要对这种结构的数据进行很多种操作,比如对数组进行排序、筛选、合并等等。

使用 array_merge 函数合并二维数组

在 PHP 中,合并数组的方法非常多,其中使用 array_merge 函数是一种常见方法。这个函数可以将多个数组合并成一个新的数组,合并后的键值会自动重新排序。下面是使用 array_merge 函数将两个二维数组合并的例子:

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

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

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

var_dump($array);

输出结果为:

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

可以看到,合并后的数组按照原来的顺序进行了重新排序,且键值重新赋值,这是因为 array_merge 函数会将所有数组的键值作为新数组的键,而新键的值就是原始数组中的值。如果原始数组的键值存在重复,后面的数组会覆盖前面数组的值。这种行为在很多场景下是不可取的,因为原始数组的键值可能包含重要的信息,重新排序或者覆盖后可能会导致数据错误。那么,有没有一种方法可以保留原始数组的键值呢?

使用 array_replace_recursive 函数合并二维数组

array_replace_recursive 函数是 PHP 自带的另一种数组合并方法,和 array_merge 函数不同的是,它会保留原始数组的键值,而不是重新排序或覆盖。此外,array_replace_recursive 函数还支持递归合并数组,可以处理多维数组的合并。下面是使用 array_replace_recursive 函数将两个二维数组合并的例子:

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

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

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

var_dump($array);

输出结果为:

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

可以看到,合并后的数组保留了原始数组的键值和顺序,而不是改变它们的顺序或覆盖它们的值。此外,array_replace_recursive 函数还支持对多维数组进行合并,处理起来更加方便。但需要注意的是,在递归合并数组时,如果数组的结构不一致,可能会导致结果异常,需要特别注意。

总结

在 PHP 中,二维数组是常见的数据结构之一。在实际开发中,可能会遇到需要将两个或多个二维数组合并为一个新的二维数组的情况。如果直接使用 PHP 自带的 array_merge 函数进行合并,会出现数组重新排序或者键值被覆盖的情况。为了保持原始数组的键值和顺序,可以使用 array_replace_recursive 函数进行数组的合并。此外,array_replace_recursive

Comprendre la structure des tableaux à deux dimensions

En PHP, un tableau à deux dimensions est en fait un tableau contenant plusieurs tableaux à une dimension. Chaque tableau unidimensionnel est un sous-tableau dans lequel plusieurs paires clé-valeur peuvent être stockées. Par exemple, ce qui suit est un tableau bidimensionnel contenant deux sous-tableaux : #🎜🎜#rrreee#🎜🎜# On peut voir que chaque sous-tableau représente les informations d'une personne, où nom et age est la clé, et les valeurs correspondantes sont le nom et l'âge de la personne. Dans le développement réel, de nombreuses opérations doivent être effectuées sur des données de cette structure, telles que le tri, le filtrage, la fusion, etc. de tableaux. #🎜🎜#

Utilisez la fonction array_merge pour fusionner des tableaux bidimensionnels

#🎜🎜#En PHP, il existe de nombreuses façons de fusionner des tableaux, parmi lesquelles l'utilisation de la fonction array_merge est une méthode courante. Cette fonction peut fusionner plusieurs tableaux dans un nouveau tableau et les valeurs clés fusionnées seront automatiquement réorganisées. Voici un exemple d'utilisation de la fonction array_merge pour fusionner deux tableaux bidimensionnels : #🎜🎜#rrreee#🎜🎜#Le résultat de sortie est : #🎜🎜#rrreee#🎜🎜#Comme vous peut voir, après la fusion, le tableau est réorganisé selon l'ordre d'origine et les valeurs clés​​sont réaffectées car la fonction array_merge utilisera les valeurs clés​​de toutes. tableaux comme clés du nouveau tableau, et la valeur de la nouvelle clé est la valeur du tableau d'origine dans . S'il y a des valeurs de clé en double dans le tableau d'origine, le tableau suivant écrasera les valeurs du tableau précédent. Ce comportement n'est pas souhaitable dans de nombreux scénarios, car les valeurs clés du tableau d'origine peuvent contenir des informations importantes, et la réorganisation ou l'écrasement peut entraîner des erreurs de données. Alors, existe-t-il un moyen de conserver les valeurs clés du tableau d'origine ? #🎜🎜#

Utilisez la fonction array_replace_recursive pour fusionner des tableaux bidimensionnels

#🎜🎜#La fonction array_replace_recursive est une autre méthode de fusion de tableaux fournie avec PHP, et array_merge La fonction code> est différente en ce sens qu'elle conserve les valeurs clés du tableau d'origine au lieu de les réorganiser ou de les écraser. De plus, la fonction <code>array_replace_recursive prend également en charge la fusion récursive de tableaux et peut gérer la fusion de tableaux multidimensionnels. Voici un exemple d'utilisation de la fonction array_replace_recursive pour fusionner deux tableaux bidimensionnels : #🎜🎜#rrreee#🎜🎜#Le résultat de sortie est : #🎜🎜#rrreee#🎜🎜#Comme vous peut voir, après la fusion, le tableau conserve les valeurs clés et l'ordre du tableau d'origine, plutôt que de modifier leur ordre ou d'écraser leurs valeurs. De plus, la fonction array_replace_recursive prend également en charge la fusion de tableaux multidimensionnels, ce qui rend le traitement plus pratique. Cependant, il convient de noter que lors de la fusion récursive de tableaux, si les structures des tableaux sont incohérentes, les résultats peuvent être anormaux, une attention particulière est donc requise. #🎜🎜#

Résumé

#🎜🎜#En PHP, les tableaux à deux dimensions sont l'une des structures de données courantes. Dans le développement réel, vous pouvez rencontrer des situations dans lesquelles vous devez fusionner deux ou plusieurs tableaux bidimensionnels en un nouveau tableau bidimensionnel. Si vous utilisez directement la fonction array_merge de PHP pour fusionner, le tableau peut être réorganisé ou les valeurs clés peuvent être écrasées. Afin de conserver les valeurs clés et l'ordre du tableau d'origine, vous pouvez utiliser la fonction array_replace_recursive pour fusionner les tableaux. De plus, la fonction array_replace_recursive prend également en charge la fusion récursive de tableaux, ce qui est très pratique. Cependant, il convient de noter que lors de la fusion récursive de tableaux, une attention particulière doit être accordée à la structure du tableau pour éviter des situations anormales. #🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn