Maison >développement back-end >Problème PHP >Comment combiner des valeurs avec la même clé dans un tableau en une seule en php

Comment combiner des valeurs avec la même clé dans un tableau en une seule en php

王林
王林original
2023-05-05 20:37:061968parcourir

Dans le processus de programmation PHP, il est souvent nécessaire de traiter la même clé dans le tableau. S'il y a des éléments avec la même clé dans un tableau, comment les fusionner en un seul ? Ce qui suit est une brève introduction à certaines méthodes de traitement des tableaux en PHP pour vous aider à résoudre ce problème.

1. Utilisez la fonction array_merge_recursive()

La fonction array_merge_recursive() intégrée de PHP peut fusionner deux ou plusieurs tableaux en un seul tableau. Si la même clé apparaît dans l’un des tableaux, les différents sous-éléments seront fusionnés en un seul tableau et le résultat final sera un tableau multidimensionnel.

L'exemple de code est le suivant :

$arr1 = array("name"=>"张三","age"=>18,"hobbies"=>array("football","basketball"));
$arr2 = array("name"=>"李四","age"=>20,"hobbies"=>array("swimming","shopping"));

$result = array_merge_recursive($arr1,$arr2);

Le résultat après exécution est :

array(
    "name"=>array("张三","李四"),
    "age"=>array(18,20),
    "hobbies"=>array(
        array("football","basketball"),
        array("swimming","shopping")
    )
)

Comme vous pouvez le voir, les valeurs d'une même clé ("nom", "âge", "loisirs") sont fusionnées et devenir un tableau multidimensionnel.

2. Utiliser le parcours de boucle

En plus d'utiliser la fonction array_merge_recursive(), vous pouvez également utiliser le parcours de boucle pour fusionner des éléments avec la même clé dans le tableau en un seul.

L'exemple de code est le suivant :

$arr = array(
    "name"=>"张三",
    "age"=>18,
    "grade"=>"一年级",
    "major"=>"计算机科学",
    "score"=>array("英语"=>80,"数学"=>90),
    "address"=>array("province"=>"广东省","city"=>"深圳市")
);

$newArr = array();

foreach($arr as $key=>$value){
    if(array_key_exists($key,$newArr)){
        if(!is_array($newArr[$key])){
            $tmp = $newArr[$key];
            $newArr[$key] = array();
            array_push($newArr[$key],$tmp);
        }
        array_push($newArr[$key],$value);
    }else{
        $newArr[$key] = $value;
    }
}

Le résultat après exécution est :

array(
    "name"=>"张三",
    "age"=>18,
    "grade"=>"一年级",
    "major"=>"计算机科学",
    "score"=>array("英语"=>80,"数学"=>90),
    "address"=>array("province"=>"广东省","city"=>"深圳市")
)

Comme vous pouvez le voir, il n'y a aucun élément avec la même clé dans le tableau d'origine, donc $newArr est exactement le même que le tableau d'origine .

3. Utilisez la fonction array_reduce()

En plus des deux méthodes ci-dessus, vous pouvez également utiliser la fonction array_reduce() fournie avec PHP pour fusionner des éléments avec la même clé dans le tableau en un seul.

L'exemple de code est le suivant :

$arr = array(
    "name"=>"张三",
    "age"=>18,
    "grade"=>"一年级",
    "major"=>"计算机科学",
    "score"=>array("英语"=>80,"数学"=>90),
    "address"=>array("province"=>"广东省","city"=>"深圳市")
);

$newArr = array_reduce(array_keys($arr),function($result,$key) use ($arr){
    if(array_key_exists($key,$result)){
        if(!is_array($result[$key])){
            $tmp = $result[$key];
            $result[$key] = array();
            array_push($result[$key],$tmp);
        }
        array_push($result[$key],$arr[$key]);
    }else{
        $result[$key] = $arr[$key];
    }
    return $result;
},array());

print_r($newArr);

Le résultat après exécution est le même que le résultat de la méthode 2 ci-dessus.

Pour résumer, il existe de nombreuses façons de traiter des éléments avec la même clé dans un tableau en PHP, et chaque méthode a ses situations applicables. Vous pouvez choisir la méthode la plus appropriée pour y faire face en fonction de la situation réelle.

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