Supprimer les éléments en double du tableau en PHP

不言
Libérer: 2023-03-24 15:32:01
original
1730 Les gens l'ont consulté

Le contenu de cet article concerne la suppression des éléments en double des tableaux en PHP. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Plusieurs méthodes de suppression d'éléments de tableau. en PHP sont ici Dans de nombreux cas, nos tableaux seront dupliqués. Alors, que devons-nous faire si nous supprimons certains contenus en double dans le tableau ? Ces éléments doivent rester uniques, nous essayons donc de trouver un moyen de les supprimer. requête traversante pour supprimer plusieurs éléments de tableau en double.
Méthode 1. Supprimer complètement les instances de tableau en double -----Supprimer un élément du tableau




?

1

1

2

3

4

5

6

7

8

9

10

11

12

13

14


function array_remove_value(&$arr, $var){
foreach ($arr as $key => $value) {
if (is_array($value)) {
array_remove_value($arr[$key], $var);
} else {
$value = trim($value);
if ($value == $var) {
unset($arr[$key]);
} else {
$arr[$key] = $value;
}
}
}
}
Copier après la connexion


2

3

4

5

6

7

8

9

10

11

12

13

14

count($a); //得到4
unset($a[1]); //删除第二个元素
count($a); //得到3
echo $a[2]; //数组中仅有三个元素,本想得到最后一个元素,但却得到blue,
echo $a[1]; //无值
?>
Copier après la connexion

1

2

3

4

5

6


count ($a); //得到4
array_splice($a,1,1); //删除第二个元素
count ($a); //得到3
echo $a[2]; //得到yellow
echo $a[1]; //得到blue
?>
Copier après la connexion



$a Un tableau est-il :



 ?

1

2

3

4

5

1

2

3

4

5

6


function delmember(&$array, $id)
{
$size = count($array);
for($i = 0; $i <$size - $id - 1; $i ++)
{
$array[$id + $i] = $array[$id + $i + 1];
}
unset($array[$size - 1]);
}
Copier après la connexion


< p class="numéro de ligne6 index5 alt1">6

<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
?>
Copier après la connexion
Copier après la connexion


C'est-à-dire supprimer l'Après l'élément, le nombre d'éléments dans le tableau (obtenu en utilisant count()) a changé, mais les indices du tableau n'ont pas été réorganisés et la valeur correspondante doit être exploitée en supprimant la clé avant le tableau.

Plus tard, j'ai adopté une autre méthode, qui en fait ne s'appelle pas du tout une "méthode", j'ai utilisé la


fonction array_splice()

prête à l'emploi de PHP4.


1

2

3

4

5

6

7

8

9


Array
(
 [a] => green
 [0] => red
 [1] => blue
)
Copier après la connexion
Copier après la connexion


<🎜><🎜><🎜><🎜><🎜>?<🎜>

1<🎜>

2<🎜>

3<🎜>

4<🎜>

5<🎜>

6<🎜>

<🎜><🎜>

<?php
$arr = array("a"=>"a1","b"=>&#39;b1&#39;,"c"=>"a2","d"=>"a1");
$arr1 = array_flip($arr);
print_r($arr1);//先反转一次,去掉重复值,输出Array ( [a1] => d [b1] => b [a2] => c )
$arr2 = array_flip($arr);
print_r($arr2);//再反转回来,得到去重后的数组,输出Array ( [a1] => d [b1] => b [a2] => c )
$arr3 = array_unique($arr);
print_r($arr3);//利用php的array_unique函数去重,输出Array ( [a] => a1 [b] => b1 [c] => a2 )
?>
Copier après la connexion
Copier après la connexion

<🎜><🎜>

<🎜><🎜>Méthode 2, <🎜>Supprimer du array Fonctions pour les éléments répétitifs

1<🎜>

2<🎜>

3<🎜>

4<🎜>

5< 🎜>

6<🎜>

7<🎜>

8< 🎜>

9<🎜>

<🎜><🎜><🎝>

<🎜><🎜>

补充小例子:

方法一、php有内置函数array_unique可以用来删除数组中的重复值

  • array_unique -- 移除数组中重复的值

  • array_unique说明

  • array array_unique ( array array )

  • array_unique() 接受 array 作为输入并返回没有重复值的新数组

注意键名保留不变。array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。
注: 当且仅当 (string) $elem1 === (string) $elem2 时两个单元被认为相同。就是说,当字符串的表达一样时。
第一个单元将被保留。
例子:array_unique()




?

1

2

3

4

5


<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
?>
Copier après la connexion
Copier après la connexion


上例将输出:




?

1

2

3

4

5

6


Array
(
 [a] => green
 [0] => red
 [1] => blue
)
Copier après la connexion
Copier après la connexion


方法二、array_flip实现去重效果

另一个方法是使用php的array_flip函数来间接的实现去重效果
array_flip是反转数组键和值的函数,它有个特性就是如果数组中有二个值是一样的,那么反转后会保留最后一个键和值,利用这个特性我们用他来间接的实现数组的去重.




?

1

2

3

4

5

6

7

8

9


<?php
$arr = array("a"=>"a1","b"=>&#39;b1&#39;,"c"=>"a2","d"=>"a1");
$arr1 = array_flip($arr);
print_r($arr1);//先反转一次,去掉重复值,输出Array ( [a1] => d [b1] => b [a2] => c )
$arr2 = array_flip($arr);
print_r($arr2);//再反转回来,得到去重后的数组,输出Array ( [a1] => d [b1] => b [a2] => c )
$arr3 = array_unique($arr);
print_r($arr3);//利用php的array_unique函数去重,输出Array ( [a] => a1 [b] => b1 [c] => a2 )
?>
Copier après la connexion
Copier après la connexion


二种方法不同的是用array_flip得到的是重复元素最后的键和值,用array_unique得到的是二个重复元素第一个键和值。

希望本文所述对大家学习php程序设计有所帮助,解决数组重复元素问题。

相关推荐:

php之比较运算符

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