Maison  >  Article  >  cadre php  >  Analyse complète du remplacement de la baie ThinkPHP

Analyse complète du remplacement de la baie ThinkPHP

PHPz
PHPzoriginal
2023-04-21 11:22:31711parcourir

La manipulation de tableaux est une tâche courante lors de l'écriture de programmes PHP. Dans les projets ThinkPHP, il est souvent nécessaire de remplacer certaines valeurs du tableau, comme par exemple remplacer toutes les chaînes vides ('') du tableau par null. Cet article vous présentera différentes méthodes de remplacement de tableau dans ThinkPHP.

1. Remplacement des tableaux ordinaires

Tout d'abord, jetons un coup d'œil à la méthode de remplacement des tableaux ordinaires. Supposons que nous ayons un tableau $arr, qui contient quatre éléments :

$arr = array(

'name' => '张三',
'age' => 18,
'email' => 'zhangsan@example.com',
'gender' => '男',

);

Si nous voulons remplacer toutes les chaînes vides du tableau par null, nous pouvons utiliser foreach pour parcourir le tableau. , Remplacez chaque élément. Le code est le suivant :

foreach ($arr as &$value) {

if ($value === '') {
    $value = null;
}

}

Parmi eux, &$value représente une référence à l'élément du tableau, afin que le tableau d'origine puisse être modifié directement. Après avoir exécuté le code ci-dessus, la valeur de $arr deviendra :

array(

'name' => '张三',
'age' => 18,
'email' => 'zhangsan@example.com',
'gender' => '男',

);

Si vous souhaitez remplacer la valeur du nom de clé spécifié, vous pouvez ajouter un jugement conditionnel dans la boucle, le code est le suivant :

foreach ($ arr as $key => &$value) {

if ($key === 'email' && $value === 'zhangsan@example.com') {
    $value = 'lisi@example.com';
}

}

Dans le code ci-dessus, nous avons remplacé la valeur du nom de la clé de messagerie, c'est-à-dire remplacé 'zhangsan@example .com' avec 'lisi@example.com' ', si vous exécutez ce code, la valeur de $arr deviendra :

array(

'name' => '张三',
'age' => 18,
'email' => 'lisi@example.com',
'gender' => '男',

);

Mais cette méthode a un inconvénient si le tableau est grand. , l'efficacité de l'utilisation d'une boucle pour parcourir et remplacer sera très faible. Nous devons donc trouver une méthode de remplacement plus efficace.

2. Remplacement de tableau récursif

Si nous devons remplacer toutes les chaînes vides d'un tableau multidimensionnel par null, alors utiliser une boucle n'est plus suffisant. À ce stade, nous pouvons utiliser la méthode récursive pour parcourir l'ensemble du tableau et récurer sur chaque sous-tableau jusqu'à ce que l'élément le plus élémentaire soit trouvé à remplacer.

Le code est le suivant :

function array_replace_recursive_null($arr) {

foreach ($arr as $key => &$value) {
    if (is_array($value)) {
        $value = array_replace_recursive_null($value);
    } elseif ($value === '') {
        $value = null;
    }
}
return $arr;

}

Dans le code ci-dessus, nous déterminons d'abord si l'élément actuel est un tableau. Si tel est le cas, appelons récursivement la fonction array_replace_recursive_null(). pour le remplacement. Si ce n'est pas le cas, déterminez si l'élément actuel est une chaîne vide et, si c'est le cas, remplacez-le par null.

Utilisez cette fonction pour remplacer le tableau, le code est le suivant :

$arr = array(

'name' => '张三',
'age' => 18,
'contact' => array(
    'email' => 'zhangsan@example.com',
    'phone' => '',
    'address' => array(
        'province' => '广东省',
        'city' => '',
        'district' => '番禺区',
    ),
),

);
$arr = array_replace_recursive_null($arr);

Si vous exécutez le code ci-dessus, la valeur de $arr deviendra :

array(

'name' => '张三',
'age' => 18,
'contact' => array(
    'email' => 'zhangsan@example.com',
    'phone' => null,
    'address' => array(
        'province' => '广东省',
        'city' => null,
        'district' => '番禺区',
    ),
),

);

Le remplacement récursif de tableau convient au remplacement de tableaux multidimensionnels entiers, mais le remplacement de valeurs uniques nécessite toujours l'utilisation du parcours de boucle.

3. Utilisez la fonction array_map() pour remplacer

La fonction array_map() en PHP peut appliquer la fonction de rappel spécifiée à chaque élément du tableau et renvoyer un nouveau tableau. Nous pouvons utiliser cette fonction pour remplacer des valeurs dans un tableau.

Supposons que nous ayons un tableau contenant les données suivantes :

$arr = array('apple', 'orange', 'banana', '');

Nous voulons remplacer les chaînes vides qu'il contient par null, vous peut utiliser la fonction array_map() et une fonction de rappel pour y parvenir.

Le code est le suivant :

function replace_null($value) {

return $value === '' ? null : $value;

}
$arr = array_map('replace_null', $arr);

Dans le code, nous avons écrit une fonction de rappel replace_null(), if $ Si value est une chaîne vide, null est renvoyé, sinon $value est renvoyé. Cette fonction est ensuite transmise en tant que fonction de rappel à la fonction array_map() pour terminer le remplacement des valeurs dans le tableau.

4. Utilisez la fonction array_walk_recursive() pour remplacer

La fonction array_walk_recursive() est utilisée pour appliquer de manière récursive des fonctions définies par l'utilisateur à chaque élément d'un tableau ou d'un objet. Similaire à array_map(), mais peut parcourir de manière récursive des tableaux multidimensionnels. Nous pouvons utiliser cette fonction pour remplacer toutes les valeurs d'un tableau multidimensionnel.

Supposons que nous ayons un tableau multidimensionnel $arr, qui contient des chaînes vides :

$arr = array(

'name' => '张三',
'age' => 18,
'contact' => array(
    'email' => 'zhangsan@example.com',
    'phone' => '',
    'address' => array(
        'province' => '广东省',
        'city' => '',
        'district' => '番禺区',
    ),
),

);

Maintenant, nous voulons remplacer toutes les chaînes vides par null. Ceci peut être réalisé en utilisant la fonction array_walk_recursive() et une fonction de rappel.

Le code est le suivant :

function replace_null_recursive(&$value, $key) {

if ($value === '') {
    $value = null;
}

}
array_walk_recursive($arr, 'replace_null_recursive');

Dans le code, nous avons écrit une fonction de rappel replace_null_recursive() , si Si $value est une chaîne vide, remplacez-la par null et transmettez cette fonction comme fonction de rappel à la fonction array_walk_recursive().

Après avoir exécuté le code ci-dessus, la valeur de $arr sera la suivante :

array(

'name' => '张三',
'age' => 18,
'contact' => array(
    'email' => 'zhangsan@example.com',
    'phone' => null,
    'address' => array(
        'province' => '广东省',
        'city' => null,
        'district' => '番禺区',
    ),
),

);

5. Résumé

Cet article présente diverses méthodes pour remplacer les tableaux dans les projets ThinkPHP, y compris les tableaux ordinaires. Remplacement de tableau, remplacement de tableau récursif, remplacement à l'aide de la fonction array_map() et remplacement à l'aide de la fonction array_walk_recursive(). Chaque méthode comporte des scénarios applicables, et choisir la méthode la plus appropriée en fonction de la situation réelle peut permettre d'économiser du temps et de l'énergie.

Enfin, j'espère que cet article pourra être utile aux lecteurs et pourra accomplir la tâche plus efficacement lors du remplacement d'une baie.

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