当前位置:首页 » 编程语言 » php数组交集

php数组交集

发布时间: 2023-03-05 07:50:02

php两个数组的交集

你这个搞得是不是太复杂了。请使用array_diff比较数组,返回不同,再计算交集。

㈡ php 如何写一个取一维数组交集的公共方法

array_intersect
(PHP 4 >= 4.0.1, PHP 5)

array_intersect -- 计算数组的交集说明
array array_intersect ( array array1, array array2 [, array ...])

array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。

例子 1. array_intersect() 例子

<?php
$array1 = array ("a" => "green", "red", "blue");
$array2 = array ("b" => "green", "yellow", "red");
$result = array_intersect ($array1, $array2);
?>
这使得 $result 成为:

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

注: 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。

array_diff
(PHP 4 >= 4.0.1, PHP 5)

array_diff -- 计算数组的差集说明
array array_diff ( array array1, array array2 [, array ...])

array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。

例子 1. array_diff() 例子

<?php
$array1 = array ("a" => "green", "red", "blue", "red");
$array2 = array ("b" => "green", "yellow", "red");
$result = array_diff ($array1, $array2);
?>
这使得 $result 成为 array (1 => "blue");。在 $array1 中多次出现的值同样对待。

注: 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。
注: 注意此函数仅检查多维数组中的一维。当然你可以用 array_diff($array1[0], $array2[0]); 检查更深的维度。

array_diff_assoc -- 带索引检查计算数组的差集

说明
array array_diff_assoc ( array array1, array array2 [, array ...])

array_diff_assoc() 返回一个 array,返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意和 array_diff() 不同的是键名也用于比较。

例子 1. array_diff_assoc() 例子

<?php
$array1 = array ("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array ("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);

?>
上面的例子中可以看到键值对 "a" => "green" 在两个数组中都有,因此不在本函数的输出中。与此不同,键值对 0 => "red" 出现在输出中是因为第二个参数中的 "red" 的键名是 1。

键值对 key => value 中的两个值仅在 (string) $elem1 === (string) $elem2 时被认为相等。也就是说使用了严格检查,字符串的表达必须相同。

㈢ 如何运用PHP函数array

PHP Array函数是PHP 核心的组成部分。无需安装即可使用这些函数。

array()
创建数组。
array_change_key_case()
返回其键均为大写或小写的数组。
array_chunk()
把一个数组分割为新的数组块。
array_column()
返回输入数组中某个单一列的值。
array_combine()
通过合并两个数组(一个为键名数组,一个为键值数组)来创建一个新数组。
array_count_values()
用于统计数组中所有值出现的次数。
array_diff()
比较数组,返回两个数组的差集(只比较键值)。
array_diff_assoc()
比较数组,返回两个数组的差集(比较键名和键值)。
array_diff_key()
比较数组,返回两个数组的差集(只比较键名)。
array_diff_uassoc()
比较数组,返回两个数组的差集(比较键名和键值,使用用户自定义的键名比较函数)。
array_diff_ukey()
比较数组,返回两个数组的差集(只比较键名,使用用户自定义的键名比较函数)。
array_fill()
用给定的键值填充数组。
array_fill_keys()
用给定的指定键名的键值填充数组。
array_filter()
用回调函数过滤数组中的元素。
array_flip()
反转/交换数组中的键名和对应关联的键值。
array_intersect()
比较数组,返回两个数组的交集(只比较键值)。
array_intersect_assoc()
比较数组,返回两个数组的交集(比较键名和键值)。
array_intersect_key()
比较数组,返回两个数组的交集(只比较键名)。
array_intersect_uassoc()
比较数组,返回两个数组的交集(比较键名和键值,使用用户自定义的键名比较函数)。
array_intersect_ukey()
比较数组,返回两个数组的交集(只比较键名,使用用户自定义的键名比较函数)。
array_key_exists()
检查指定的键名是否存在于数组中。
array_keys()
返回数组中所有的键名。
array_map()
将用户自定义函数作用到给定数组的每个值上,返回新的值。
array_merge()
把一个或多个数组合并为一个数组。
array_merge_recursive()
递归地把一个或多个数组合并为一个数组。
array_multisort()
对多个数组或多维数组进行排序。
array_pad()
将指定数量的带有指定值的元素插入到数组中。
array_pop()
删除数组中的最后一个元素(出栈)。
array_proct()
计算数组中所有值的乘积。
array_push()
将一个或多个元素插入数组的末尾(入栈)。
array_rand()
从数组中随机选出一个或多个元素,返回键名。
array_rece()
通过使用用户自定义函数,迭代地将数组简化为一个字符串,并返回。
array_replace()
将所有被替换数组中的元素替换成第一个数组。
array_replace_recursive()
将所有被替换数组中的元素递归地替换成第一个数组。
array_reverse()
将原数组中的元素顺序翻转,创建新的数组并返回。
array_search()
在数组中搜索给定的值,如果成功则返回相应的键名。
array_shift()
删除数组中的第一个元素,并返回被删除元素的值。
array_slice()
返回数组中的选定部分。
array_splice()
把数组中的指定元素去掉并用其它值取代。
array_sum()
返回数组中所有值的和。
array_udiff()
比较数组,返回两个数组的差集(只比较键值,使用一个用户自定义的键名比较函数)。
array_udiff_assoc()
比较数组,返回两个数组的差集(比较键名和键值,使用内建函数比较键名,使用用户自定义函数比较键值)。
array_udiff_uassoc()
比较数组,返回两个数组的差集(比较键名和键值,使用两个用户自定义的键名比较函数)。
array_uintersect()
比较数组,返回两个数组的交集(只比较键值,使用一个用户自定义的键名比较函数)。
array_uintersect_assoc()
比较数组,返回两个数组的交集(比较键名和键值,使用内建函数比较键名,使用用户自定义函数比较键值)。
array_uintersect_uassoc()
比较数组,返回两个数组的交集(比较键名和键值,使用两个用户自定义的键名比较函数)。
array_unique()
删除数组中重复的值。
array_unshift()
在数组开头插入一个或多个元素。
array_values()
返回数组中所有的值。
array_walk()
对数组中的每个成员应用用户函数。
array_walk_recursive()
对数组中的每个成员递归地应用用户函数。
arsort()
对关联数组按照键值进行降序排序。
asort()
对关联数组按照键值进行升序排序。
compact()
创建一个包含变量名和它们的值的数组。
count()
返回数组中元素的数目。
current()
返回数组中的当前元素。
each()
返回数组中当前的键/值对。
end()
将数组的内部指针指向最后一个元素。
extract()
从数组中将变量导入到当前的符号表。
in_array()
检查数组中是否存在指定的值。
key()
从关联数组中取得键名。
krsort()
对关联数组按照键名降序排序。
ksort()
对关联数组按照键名升序排序。
list()
把数组中的值赋给一些数组变量。
natcasesort()
用"自然排序"算法对数组进行不区分大小写字母的排序。
natsort()
用"自然排序"算法对数组排序。
next()
将数组中的内部指针向前移动一位。
pos()
current() 的别名。
prev()
将数组的内部指针倒回一位。
range()
创建一个包含指定范围的元素的数组。
reset()
将数组的内部指针指向第一个元素。
rsort()
对数值数组进行降序排序。
shuffle()
把数组中的元素按随机顺序重新排列。
sizeof()
count() 的别名。
sort()
对数值数组进行升序排序。
uasort()
使用用户自定义的比较函数对数组中的键值进行排序。
uksort()
使用用户自定义的比较函数对数组中的键名进行排序。
usort()
使用用户自定义的比较函数对数组进行排序。
Array(arglist)
作用: 创建数组并给数组赋值
arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则将会创建零长度的数组。
例:一般创建数组的方法为
Dim AA(2)
AA(0)=10
AA(1)=20
AA(2)=30
MsgBox AA(2)
如果像以上的话比较繁琐那么如果用array函数呢?
Dim AA
AA=Array(10,20,30)
B=AA(2)
MsgBox B
这样的话过程就比较简单用的时候拿出来就行了。
static Object get(Object array, int index)
返回指定数组对象中索引组件的值。
static boolean getBoolean(Object array, int index)
以 boolean 形式返回指定数组对象中索引组件的值。
static byte getByte(Object array, int index)
以 byte 形式返回指定数组对象中索引组件的值。
static char getChar(Object array, int index)
以 char 形式返回指定数组对象中索引组件的值。
static double getDouble(Object array, int index)
以 double 形式返回指定数组对象中索引组件的值。
static float getFloat(Object array, int index)
以 float 形式返回指定数组对象中索引组件的值。
static int getInt(Object array, int index)
以 int 形式返回指定数组对象中索引组件的值。
static int getLength(Object array)
以 int 形式返回指定数组对象的长度。
static long getLong(Object array, int index)
以 long 形式返回指定数组对象中索引组件的值。
static short getShort(Object array, int index)
以 short 形式返回指定数组对象中索引组件的值。
static Object newInstance(Class<?> componentType, int length)
创建一个具有指定的组件类型和长度的新数组。
static Object newInstance(Class<?> componentType, int[] dimensions)
创建一个具有指定的组件类型和维度的新数组。
static void set(Object array, int index, Object value)
将指定数组对象中索引组件的值设置为指定的新值。
static void setBoolean(Object array, int index, boolean z)
将指定数组对象中索引组件的值设置为指定的 boolean 值。
static void setByte(Object array, int index, byte b)

Array 对象用于在单个的变量中存储多个值。

参数
参数size是期望的数组元素个数。返回的数组,length 字段将被设为size的值。
参数element...,elementn是参数列表。当使用这些参数来调用构造函数 Array() 时,新创建的数组的元素就会被初始化为这些值。它的 length 字段也会被设置为参数的个数。

返回值
返回新创建并被初始化了的数组。
如果调用构造函数 Array() 时没有使用参数,那么返回的数组为空,length 字段为 0。
当调用构造函数时只传递给它一个数字参数,该构造函数将返回具有指定个数、元素为 undefined 的数组。
当其他参数调用 Array() 时,该构造函数将用参数指定的值初始化数组。
当把构造函数作为函数调用,不使用 new 运算符时,它的行为与使用 new 运算符调用它时的行为完全一样。

㈣ (php编程)如何对数组中的元素进行比较

<?php
$a = array('1' => 'apple', '2' => 'orange', '3'=>'banana');
$b = array('1' => 'apple', '2' => 'orange', '3'=>'pear');

echo '$a:';
print_r($a);

echo '$b:';
print_r($b);

echo '1:';
$c = array_diff($a, $b);
print_r($c);

echo '2:';
$c = array_diff($b, $a);
print_r($c);

echo '3:';
$c = array_unique(array_merge($a, $b));
print_r($c);

echo '4:';
$c = array_intersect($a, $b);
print_r($c);

呵呵,没想到和楼上完全一样。

㈤ php里说出数组的常用函数及用法

PHP常用操作数组的函数
变量和数组的转换
compact() 将变量整合成数组

extract() 将数组中的每个值以键的名分解成变量
变量和字符串转换
explode() 以某个子串分解字符串成数组
implode() 将一维数组根据某个符号拼接成字符串
数组与数组之间关系
array_merge() 合并/并集
array_diff() 差集
array_intersect() 交集
数组值的操作
array_pop() 删除(弹出)数组最后一个值
array_push() 向数组中追加一个值
判断数组是否存在数组中
in_array() 判断一个值是否存在数组中
array_key_exists() 判断键是否存在数组中
数组去重
array_unique() 数组去重
获取二维数组中的值的集合
array_column() 获取二维数组中的值的集合
提取数组的键与值
array_values 提取数组的值构成一维数组
array_keys 提取数组的键构成一维数组
返回数组中的随机的键
array_rand() 返回数组中的随机的键
返回数组中值的数量
count() 返回数组中值的和
查询数组中的值
array_search() 查询数组中的值是否存在/in_array()有点相似
排序
sort() 排序有很多种,按键或值升降序
array_multisort() 多维数组排序
分割数组
array_chunk()

㈥ php如何按数组键值排序

$arr=[
array(
'name'=>'小坏龙',
'age'=>28
),
array(
'name'=>'小坏龙2',
'age'=>14
),
array(
'name'=>'小坏龙3',
'age'=>59
),
array(
'name'=>'小坏龙4',
'age'=>23
),
array(
'name'=>'小坏龙5',
'age'=>23
),
array(
'name'=>'小坏龙6',
'age'=>21
),
];

array_multisort(array_column($arr,'age'),SORT_DESC,$arr);
print_r($arr);

其中 array_column(数组,数组中的某个键值) 从多维数组中取出某个键值的一列 返回一个一维数组;
array_multisort(数组(一维数组),排序方式(SOTR_ASC,SOTR_DESC),其他数组(可以是二维的)

㈦ PHP面试题2--常用的数组函数

一,数组操作的基本函数

1. 数组的键名与值

    array_values($arr);  获得数组的值

    array_keys($arr); 获得数组的键名

    array_flip($arr); 数组的值与键名互换(如果有重复前面的会被后面的覆盖)

    in_array("apple",$arr); 在数组中检索apple

    array_search("apple",$arr); 在数组中检索apple,如果存在返回键名

    array_key_exists("apple",$arr); 检索给定的键名是否存在数组中

    isset($arr["apple"]); 检索给定的键名是否存在数组中

    array_unique() 删除数组中的重复值

2. 数组的内部指针

    current($arr); 返回数组中的当前单元

    pos($arr); 返回数组中的当前单元

    key($arr); 返回数组中的当前单元的键名

    prev($arr); 将数组中的内部指针倒回一位

    next($arr); 将数组中的内部指针向前移动一位

    end($arr);  将数组中的内部指针指向最后一单元

    reset($arr); 将数组中的内部指针指向第一单元

    each($arr); 将返回数组当前元素的一个键/值的构造数组,并使数组指针向前移动一位

    list($key,$value) = each($arr); 获得数组当前元素的键名和值

3. 数组和变量之间的转换

    extract(array,extract_rules,prefix); 函数从数组中将变量导入到当前符号表。该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。

    compact(var1,var2...); 创建一个包含变量名和它们的值的数组。任何没有变量名与之对应的字符串都被略过。

二,数组的分段和填充

1. 数组的分段

    array_slice(array,start,length,preserve); 返回数组中的选定部分。如果数组中有字符串键名,返回的数组将保留键名。

    array_splice(array1,start,length,array2); 从数组中移除选定的元素,并用新元素取代它。函数返回被移除元素的数组,如果函数没有移除任何元素(length=0),则替代数组将从start参数的位置插入。不保留替代数组的键名。

2. 数组的分割

    array_chunk(array,size,preserve_keys); 把一个数组分割为新的数组块。

3. 数组的填充

    array_pad(array,size,value); 将指定数量的带有指定值的元素插入到数组。如果将size参数设置为负数,该函数会在原始数组之前插入新的元素。如果size参数小于原始数组的长度,该函数不会删除任何元素。

三,数组与栈

    array_push(array,value1,value2...); 向数组尾部插入一个或多个元素。即使数组有字符串键名,添加的元素将是数字键名。

    array_pop(array); 删除数组的最后一个元素。返回值是数组的最后一个值,即,被删除的元素值。如果数组为空,或者不是一个数组,将返回NULL。

四,数组和队列

    array_shift(array); 用于删除数组中的第一个元素,并返回被删除的元素。如果键名是数字,所有的元素都将获得新的键名,从0开始,并以1递增。

    array_unshift(array,value1,value2,value3...); 用于向数组插入新元素,新数组的值将被插入到数组的开头。数值键名将从0开始,以1递增。字符串键名将保持不变。

五,回调函数

    array_walk(array,myfunction,parameter...); 将数组中的每个元素应用到 用户自定义函数。在函数中,数组的键名和键值是参数。可以通过把用户自定义函数的第一个参数指定为引用:&$value,来改变数组元素的值。

    array_map(myfunction,array1,array2,array3...); 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新的值的数组。myfunction可以为null

    array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ); 用回调函数过滤数组中的元素。该函数把输入数组中的每个键值传给回调函数。如果回调函数返回true,则把输入数组中的当前键值返回给结果数组,数组键名保持不变。

    array_rece(array,myfunction,initial); 函数发送数组中的值到用户自定义函数,并返回一个字符串。如果数组是空的或者初始值未传递,该函数返回null。initial为可选,规定发送到函数处理的第一个值。

六,数组的计算

1. 数组元素的求和

    array_sum(array); 返回数组中的所有值的和

2. 数组的合并

    array_merge(array1,array2,array3...); 用于把一个或多个数组合并成一个数组。如果两个或更多个数组有相同的键名。则最后的数组会覆盖其他数组。如果向函数输入了一个数组,且键名是整数,则该函数会返回带有整数键名的新数组,其键名以0开始进行重新索引。

    array_merge_recursive(array1,array2,array3...); 用于把一个或多个数组合并为一个数组,该函数与array_merge()函数之间的不同是在处理两个或多个数组元素有相同的键名的情况下,array_merge_recursive()不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。如果您仅仅向 array_merge_recursive() 函数输入一个数组,结果与 array_merge() 相同。

3. 数组的差集

    array_diff(array1,array2,array3...); 函数用于比较两个(或更多个)数组的值,并返回差集。该函数比较两个(或更多个)数组的值(key=>value中的value),并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2或array3等等)中的值。

    array_diff_assoc(array1,array2,array3...); 函数用于比较两个(或更多个)数组的键名和键值,并返回差集。该函数比较两个(或更多个)数组的键名和键值,并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名和键值。

4. 数组的并集

array_intersect(array1,array2,array3...); 函数用于比较两个(或更多个)数组的键值,并返回交集。该函数比较两个(或更多个)数组的键值,返回一个交集数组,该数组包括了所有在被比较的数组(array1)中,同时也在任何其他参数数组(array2 或 array3 等等)中的键值。

array_intersect_assoc(array1,array2,array3...); 函数用于比较两个(或更多个)数组的键名和键值,并返回交集。该函数比较两个(或更多个)数组的键名和键值,并返回一个交集数组,该数组包括了所有在被比较的数组(array1)中,同时也在任何其他参数数组(array2 或 array3 等等)中的键名和键值。

七,数值的排序

array_multisort():  对多个数组或多维数组进行排序

sort(): 以升序对数组排序

rsort(): 以降序对数组排序

asort(): 根据值,以升序对关联数组进行排序

ksort(): 根据键,以升序对关联数组进行排序

arsort(): 根据值,以降序对关联数组进行排序

krsort(): 根据键,以降序对关联数组进行排序

资料参考:

https://www.php.cn/php-weizijiaocheng-381347.html

https://www.runoob.com/php/php-ref-array.html

㈧ php数组如何根据相同值再分组

这个答案是错误的!请及时认清。我想问一下答主你是这么想的?

请查考下面的这些PHP函数
统计:
array_count_values 统计数组中所有的值出现的次数
array_proct 计算数组中所有值的乘积
array_sum 计算数组中所有值的和
count 计算数组中的单元数目或对象中的属性个数
sizeof count() 的别名

搜索:
array_key_exists 检查给定的键名或索引是否存在于数组中
array_search 在数组中搜索给定的值,如果成功则返回相应的键名
in_array 检查数组中是否存在某个值

排序:
array_multisort 对多个数组或多维数组进行排序
arsort 对数组进行逆向排序并保持索引关系
asort 对数组进行排序并保持索引关系
krsort 对数组按照键名逆向排序
ksort 对数组按照键名排序
natcasesort 用“自然排序”算法对数组进行不区分大小写字母的排序
natsort 用“自然排序”算法对数组排序
rsort 对数组逆向排序
sort 对数组排序
uasort 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
uksort 使用用户自定义的比较函数对数组中的键名进行排序
usort 使用用户自定义的比较函数对数组中的值进行排序
shuffle 将数组打乱

交集:
array_intersect_assoc 带索引检查计算数组的交集
array_intersect_key 使用键名比较计算数组的交集
array_intersect_uassoc 带索引检查计算数组的交集,用回调函数比较索引
array_intersect_ukey 用回调函数比较键名来计算数组的交集
array_intersect 计算数组的交集
array_key_exists 用回调函数比较键名来计算数组的交集
array_uintersect_assoc 带索引检查计算数组的交集,用回调函数比较数据
array_uintersect 计算数组的交集,用回调函数比较数据

差集:
array_udiff_assoc 带索引检查计算数组的差集,用回调函数比较数据
array_udiff_uassoc 带索引检查计算数组的差集,用回调函数比较数据和索引
array_udiff 用回调函数比较数据来计算数组的差集
array_diff_assoc 带索引检查计算数组的差集
array_diff_key 使用键名比较计算数组的差集
array_diff_uassoc 用用户提供的回调函数做索引检查来计算数组的差集
array_diff_ukey 用回调函数对键名比较计算数组的差集
array_diff 计算数组的差集

获取数组的部分内容:
array_chunk 将一个数组分割成多个
array_filter 用回调函数过滤数组中的单元
array_keys 返回数组中所有的键名
array_slice 从数组中取出一段
array_values 返回数组中所有的值

加工出所需数组:
array_combine 创建一个数组,用一个数组的值作为其键名,另一个数组的值作 为其值
array_fill 用给定的值填充数组
array_flip 交换数组中的键和值
array_map 将回调函数作用到给定数组的单元上
array_merge_recursive 递归地合并一个或多个数组
array_merge 合并一个或多个数组
array_pad 用值将数组填补到指定长度
array_push 将一个或多个单元压入数组的末尾(入栈)
array_reverse 返回一个单元顺序相反的数组
array_shift 将数组开头的单元移出数组
array_splice 把数组中的一部分去掉并用其它值取代
array_unique 移除数组中重复的值
array_unshift 在数组开头插入一个或多个单元
array_walk_recursive 对数组中的每个成员递归地应用用户函数
array_walk 对数组中的每个成员应用用户函数
compact 建立一个数组,包括变量名和它们的值
range 建立一个包含指定范围单元的数组

单元:
array_pop 将数组最后一个单元弹出(出栈)
array_rand 从数组中随机取出一个或多个单元
current 返回数组中的当前单元
pos current() 的别名
each 返回数组中当前的键/值对并将数组指针向前移动一步
end 将数组的内部指针指向最后一个单元
key 返回数组中当前单元的键名
list 把数组中的值赋给一些变量
next 将数组中的内部指针向前移动一位
prev 将数组的内部指针倒回一位
reset 将数组的内部指针指向第一个单元

其他:
array_rece 用回调函数迭代地将数组简化为单一的值
extract 从数组中将变量导入到当前的符号表
array 新建一个数组

热点内容
怎样删除小视频文件夹 发布:2024-05-19 05:49:29 浏览:588
开启php短标签 发布:2024-05-19 05:44:12 浏览:473
android各国语言 发布:2024-05-19 05:42:54 浏览:246
微信什么资料都没怎么找回密码 发布:2024-05-19 05:35:34 浏览:906
填志愿密码是什么 发布:2024-05-19 05:30:23 浏览:317
城堡争霸自动掠夺脚本 发布:2024-05-19 05:22:06 浏览:204
asp编程工具 发布:2024-05-19 05:20:36 浏览:143
insertpython 发布:2024-05-19 05:12:26 浏览:244
androidant编译 发布:2024-05-19 05:04:11 浏览:987
按键脚本优化 发布:2024-05-19 04:59:57 浏览:751