Maison > développement back-end > tutoriel php > L'art de PHP Array Deep Copy : utiliser différentes méthodes pour obtenir une copie parfaite

L'art de PHP Array Deep Copy : utiliser différentes méthodes pour obtenir une copie parfaite

WBOY
Libérer: 2024-05-01 12:30:01
original
938 Les gens l'ont consulté

Les méthodes de copie approfondie de tableaux en PHP incluent : l'encodage et le décodage JSON à l'aide de json_decode et json_encode. Utilisez array_map et clone pour créer des copies complètes des clés et des valeurs. Utilisez Serialize et Unsérialize pour la sérialisation et la désérialisation.

Lart de PHP Array Deep Copy : utiliser différentes méthodes pour obtenir une copie parfaite

L'art de la copie profonde de tableau PHP : utiliser différentes méthodes pour obtenir une copie parfaite

En PHP, un tableau est une structure de données puissante utilisée pour stocker et gérer les données associées. Parfois, nous devons créer une copie d'un tableau pour effectuer des opérations ou pour éviter des modifications accidentelles de ses données d'origine. C'est là que la copie profonde entre en jeu : elle crée un nouveau tableau contenant tous les éléments du tableau d'origine, y compris les tableaux et objets imbriqués.

Méthode 1 : json_decode et json_encodejson_decodejson_encode

<?php
$originalArray = [
    'name' => 'John Doe',
    'age' => 30,
    'hobbies' => ['reading', 'hiking', 'coding']
];

// JSON 编码原始数组
$jsonEncoded = json_encode($originalArray);

// JSON 解码 JSON 编码的字符串
$deepCopy = json_decode($jsonEncoded, true);

print_r($deepCopy);
?>
Copier après la connexion

方法 2:array_mapclone

<?php
$originalArray = [
    'name' => 'Jane Smith',
    'age' => 25,
    'address' => ['street' => 'Main Street', 'number' => 123]
];

// 复制数组键及其值的深度副本
$deepCopy = array_map(function($value) {
    return is_array($value) ? array_map('clone', $value) : clone $value;
}, $originalArray);

print_r($deepCopy);
?>
Copier après la connexion

方法 3:serializeunserialize

<?php
$originalArray = [
    'product' => 'Book',
    'quantity' => 5,
    'details' => ['author' => 'John Smith', 'publisher' => 'ACME Press']
];

// 序列化原始数组
$serialized = serialize($originalArray);

// 反序列化序列化字符串
$deepCopy = unserialize($serialized);

print_r($deepCopy);
?>
Copier après la connexion

Méthode 2 : array_map et clone

<?php
// 原始购物篮数组
$originalCart = [
    ['product' => 'Book', 'quantity' => 3],
    ['product' => 'Pen', 'quantity' => 2],
    ['product' => 'Charger', 'quantity' => 1]
];

// 使用方法 1 创建购物篮副本
$deepCopy = json_decode(json_encode($originalCart), true);

// 在副本中移除一个商品
unset($deepCopy[1]);

// 输出更新后的购物篮副本
print_r($deepCopy);
?>
Copier après la connexion

Méthode 3 : sérialiser et désérialiser

🎜rrreee🎜🎜Cas pratique : Gestionnaire de panier🎜🎜🎜Considérons un gestionnaire de panier qui gère les achats des utilisateurs dans le panier . Pour éviter de modifier le panier d'origine, nous devons en créer une copie pour effectuer des opérations telles que le calcul du prix total ou la suppression d'articles. La copie approfondie garantit que nous disposons d'une copie indépendante qui n'affecte pas le panier d'origine. 🎜rrreee

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal