Home  >  Article  >  Backend Development  >  PHP学习笔记去除数组中的重复数据

PHP学习笔记去除数组中的重复数据

WBOY
WBOYOriginal
2016-06-23 13:01:29762browse

在这总结两种PHP中去除数组中重复数据的方法

1.直接利用array_unique函数

利用array_unique函数可以直接将一个数组中的重复的值去除,只保留重复值中的第一次出现的值和其对应的键值

具体的说明可以查看PHP手册

例1:

$input = array("a" => "green", "red", "b" => "green", "blue", "red");$result = array_unique($input);print_r($result);

此时输出:

Array(    [a] => green    [0] => red    [1] => blue)

注意:在array_unique函数中,若出现 int(3) 和 string(1) '3' 时,函数会将这两个值认成同一个值,也只会保留先出现那个值例2:

$input = array(4, "4", "3", 4, 3, "3");$result = array_unique($input);var_dump($result);

此时会输出:

array(2) {  [0] => int(4)  [2] => string(1) "3"}

2.利用array_flip函数和array_keys函数一起作用

在利用array_unique函数是非常的方便,但是有一点,array_unique函数不会改变保留下来的值得原先的键值,这对于在某些情况下对于新数组的操作带来了困难,此时就可以利用array_flip函数和array_keys函数

array_flip函数

将指定数组的值和键值对调,将键名变成了值,而原先数组中的值成了键名,并且如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。例如:

$trans = array("a" => 1, "b" => 1, "c" => 2);$trans = array_flip($trans);print_r($trans);

此时输出:

Array(    [1] => b    [2] => c)

array_keys函数

array_keys函数,可以返回数组中部分的或所有的键名,这个比较好理解,如果指定了serch_value则是返回指定查询值的键值例如:

$array = array(0 => 100, "color" => "red");print_r(array_keys($array));$array = array("blue", "red", "green", "blue", "blue");print_r(array_keys($array, "blue"));$array = array("color" => array("blue", "red", "green"),               "size"  => array("small", "medium", "large"));print_r(array_keys($array));

此时会输出:

Array(    [0] => 0    [1] => color)Array(    [0] => 0    [1] => 3    [2] => 4)Array(    [0] => color    [1] => size)

介绍完两个函数的使用后,在遇到一个数据重复很多的数组时,想剔除中间重复的数据而又想键值从 ‘0’ 开始计数时,可以先对函数使用array_flip函数,然后在对新的数组使用array_keys函数,即可实现

补充:在编辑介绍array_keys函数的时候突然想到应该有个函数可以取出所有的数组的value的,查了一下果然有array_value函数,这个函数可以返回一个数组的所有的值并记录进新的数组,这样也可以实现键值从 ‘0’ 开始计数,所以想实现本篇文章的目的也可以先使用array_unique函数,接着对其使用array_value函数。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:preg_replace_callbackNext article:yii 查询问题