PHP数组合并及操作

array_combine() 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值array array_merge ( array $array1

大家好,PHP数组合并及操作相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于PHP数组合并及操作和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

array_merge() 合并一个或多个数组的单元格,并将一个数组中的值附加到前一个数组中。返回结果数组。

在数组值相同的情况下,如果输入数组具有相同的字符串键名,则键名后面的值将覆盖前面的值。

但是,如果数组包含数字键,则后续值不会覆盖原始值,而是会追加到它的后面,并且其数字索引将重新索引。

如果只给出一个数组并且该数组是按数字索引的,则键名称将连续重新索引。如果它是唯一的字符串键名,则保留该键名。

如果关联数组和索引数组混合,索引数组会重新索引,关联数组的键名会保留;

//如果关联数组的键名相同,则后面的值覆盖前面的值$a1=array(‘a’=’Linux’,’b’=’Apache’);$a2=array(‘c ‘=’MySQL’,’b’=’PHP’);print_r(array_merge($a1,$a2)); //输出:Array ([a]=Linux [b]=PHP [c]=MySQL)//无键如果数组已命名,则重新索引$a1=array(‘a’=’Linux’, ‘Apache’);$a2=array(‘c’=’MySQL’,’PHP’);print_r(array_merge($a1,$a2)); //输出:Array ([a]=Linux [0]=Apache [c]=MySQL[1]=PHP) //如果不存在键名且值相同的数组,则为其重建索引。保留重复值$a1=array(‘a’=’Linux’,’Apache’);$a2=array(‘c’=’MySQL’,’php’,’Apache’);print_r(array_merge($ a1 ,$a2)); //输出:Array([a]=Linux[0]=Apache[c]=MySQL[1]=php[2]=Apache)

//如果只使用一个数组参数,则键名以0开头,用于重新索引$a=array(3=’PHP’,4=’MySQL’);print_r(array_merge($a)); //输出:数组([0]=PHP [1]=MySQL)

//如果索引数组的键名相同,则重建索引$a1=array(‘a’=’Linux’,1=’Apache’);$a2=array(‘c’=’MySQL’, 1=’PHP’);print_r(array_merge($a1,$a2)); //输出:数组( [a]=Linux [0]=Apache [c]=MySQL [1]=PHP )

//如果索引数组的键名相同并且键名相同则不会被覆盖并重建索引$a1=array(‘a’=’Linux’,1=’Apache’ );$a2=array(‘c’=’MySQL’,1=’Apache’);print_r(array_merge($a1,$a2));//输出:Array([a]=Linux[0]=Apache[ c]=MySQL [1]=Apache) 归纳: 如果关联数组的键名相同,则后者覆盖前者,保留后者的键名;

如果索引数组的键名相同,则会重建索引(不保留原来的索引键名),不会发生覆盖;

索引名相同时如何合并数组(避免相同键名相同时直接修改键值的问题)?

PHP数组合并及操作

?phpfunction array_add($a,$b){$arr=array_intersect_key($a, $b);foreach($b as $key=$value){if(!array_key_exists($key, $a)){$a [$key]=$value;}}foreach($arr as $key=$value){$a[$key]=$a[$key]+$b[$key];}返回$a;}$ a=数组(‘0’=’2′,’1’=’4′,’3’=’8′,’a’=’100’);$b=数组(‘0’=’5’, ‘2’=’4′,’b’=’33’,’a’=’22’);$arr=array_add($a,$b);echo ‘pre’;print_r($arr);echo ‘ /pre’;Array([0]=7[1]=4[3]=8[a]=122[2]=4[b]=33)注意:array_merge(array_merge(array1,array2,array3.))

三个参数必须是数组,否则会出错,所以使用is_array()之前必须检查是否是数组;

总结:对于索引数组,索引不会被重建(保留原来的键名);

对于关联数组,键名也会被保留;

如果键名相同(索引数组和关联数组),则前者覆盖后者;

示例:array_merge() 和运算符符号“+”之间的比较

?php$a=数组(1=’a’, 2=’b’, 3=’c’, ‘min’=’f’, ‘max’=’j’);$b=数组(2=’ e’, 4=’d’, 5=’c’, ‘min’=’h’, ‘max’=’j’);$c=$a + $b;print_r($c);echo ‘br ‘;$d=array_merge($a, $b);print_r($d);输出结果:

数组( [1]=a [2]=b [3]=c [最小值]=f [最大值]=j [4]=d [5]=c )数组( [0]=a [1]=b [2]=c [min]=h [max]=j [3]=e [4]=d [5]=c ) 注意: print_r() 函数在输出时自动为没有键名的元素添加一个数组索引后输出;

数组比较(==或===)

==等于:

判断数组长度是否相等

PHP数组合并及操作

判断数组的索引下标是否相等

判断数组的值是否相等(不判断数据类型)

===恒定等于:

判断数组长度是否相等

判断数组的索引下标和索引顺序是否相等

要判断数组的值是否相等,还需要判断数据类型。

?php$arr1=数组(1, 2, 3, 4);$arr2=数组(‘a’=1, ‘b’=2, ‘c’=3, ‘d’=4);$arr3=数组(’10’=’1,2,3,4’);$arr4=数组(‘3’=4,’2’=3,’1’=2,’0’=1);$arr5=数组(‘0’=1,’1’=2,’2’=3,’3’=4);var_dump($arr1==$arr2); //falseecho ‘hr/’;var_dump($arr1==$arr4); //trueecho ‘hr/’;var_dump($arr1==$arr5); //trueecho ‘hr/’;var_dump($arr1===$arr4); //falseecho ‘hr/’;var_dump ($arr1===$arr5); //真的?对于分割和分解函数,请参见array_slice() 和array_splice() 之间的区别

array_intersect() 计算数组的交集

数组array_intersect ( 数组$array1 , 数组$array2 [, 数组$ . ] )

array_intersect() 返回一个数组,其中包含array1 中也存在于所有其他参数数组中的所有值。请注意,键名称保持不变。

$array1=array(‘a’=’绿色’, ‘红色’, ‘蓝色’);$array2=array(‘b’=’绿色’, ‘黄色’, ‘红色’);$结果=array_intersect($ array1, $array2);Array([a]=green[0]=red)array_diff() 计算数组的差异

PHP数组合并及操作

数组array_diff ( 数组$array1 , 数组$array2 [, 数组$ . ] )

array_diff() 返回一个数组,其中包含array1 中不存在于任何其他参数数组中的所有值。请注意,键名称保持不变。

$array1=array(‘a’=’绿色’, ‘红色’, ‘蓝色’, ‘红色’);$array2=array(‘b’=’绿色’, ‘黄色’, ‘红色’);$结果=array_diff($array1, $array2);print_r($result);Array([1]=blue)array_intersect_assoc() 通过索引检查计算数组的交集

数组array_intersect_assoc ( 数组$array1 , 数组$array2 [, 数组$ . ] )

注:该函数为没有键名的元素重建数字索引,其返回值为具有相同键名的元素(包括不同键名的数字索引,不会返回)

?php$array1=array(‘a’=’绿色’, ‘b’=’棕色’, ‘c’=’蓝色’, ‘红色’);$array2=array(‘a’=’绿色’, ‘ b’=’黄色’, ‘蓝色’, ‘红色’);$result_array=array_intersect_assoc($array1, $array2);print_r($result_array);输出结果:

Array([a]=green)array_diff_assoc() 通过索引检查计算数组的差异集

数组array_diff_assoc ( 数组$array1 , 数组$array2 [, 数组$. ] )

注:该函数为没有键名的元素重建数字索引,其返回值为不同键名的元素(包括不同键名的数字索引,也返回)

用户评论

PHP数组合并及操作
优雅的叶子

这篇文章讲得很详细!终于明白为什么我要在用 array_merge 的时候总是遇到问题了。合并数组的操作方法其实很简单,重要的是要理解它背后的一些逻辑,这个文章解释的很到位!

    有8位网友表示赞同!

PHP数组合并及操作
红尘烟雨

PHP 数组的合并与运算?听起来有点抽象啊,感觉我现在的基础还达不到这篇文章的讲解深度呢…

    有8位网友表示赞同!

PHP数组合并及操作
别在我面前犯贱

学习新语言总是充满挑战,这篇博文让我觉得学 PHP 的难度也不小。不过,看了之后确实能更清晰地理解合并数组的操作方式了,以后遇到这种情况也能游刃有余!

    有16位网友表示赞同!

PHP数组合并及操作
将妓就计

其实我觉得 PHP 中的数组操作比想象中简单很多,关键是掌握一些常用的函数用法。这篇博文很全面,解释的很清楚,还配有例子,对于初学者来说很有帮助!

    有9位网友表示赞同!

PHP数组合并及操作
来瓶年的冰泉

我之前一直用旧方法合并数组,现在才知道 array_merge 的功能这么强大!简直要给作者点赞!从现在开始就学着用 array_merge 了,希望以后能更轻松地处理复杂的数组操作。

    有11位网友表示赞同!

PHP数组合并及操作
南初

PHP 数组的运算确实需要仔细阅读文档才能弄明白,因为有很多细微的地方容易让人困惑。这篇博文将这方面的知识点和使用实例结合起来,学习起来比单纯读文档要舒服很多!

    有6位网友表示赞同!

PHP数组合并及操作
暮染轻纱

感觉这篇文章只讲了 array_merge 和 array_intersect 的用法,至于其他运算方法没有详细介绍,期待作者以后能补充更多内容!

    有15位网友表示赞同!

PHP数组合并及操作
陌上蔷薇

在实际开发中,经常会用到数组合并与运算。这篇博文讲解透彻,不仅提供了理论知识,还附帶了应用实例,非常实用!

    有10位网友表示赞同!

PHP数组合并及操作
鹿先森,教魔方

学习任何新的编程语言都需要大量的实践,阅读这个博文后,我会尝试用 array_merge 和其他方法来操作数组,并记录下自己的心得体会!

    有10位网友表示赞同!

PHP数组合并及操作
赋流云

我还是觉得PHP 阵列的合并与运算相对复杂一些,容易让人头疼。 希望以后有更好的学习工具可以帮助我们深入理解这些知识!

    有19位网友表示赞同!

PHP数组合并及操作
青衫故人

这篇博文虽然讲得比较详细,但对于新手来说还是有点抽象。希望作者能够加入更多针对初学者的解释或示例!

    有14位网友表示赞同!

PHP数组合并及操作
←极§速

感觉文章的配图很多,很直观易懂,有效地帮助我理解了数组合并与运算的原理和操作步骤!

    有19位网友表示赞同!

PHP数组合并及操作
∞◆暯小萱◆

PHP 的数组操作确实需要花点时间去学习和练习,这篇博文虽然没有给我一个完美的解决方案,但它指引了我学习的方向,让我更加清晰地认识到下一步该如何进行。

    有5位网友表示赞同!

PHP数组合并及操作
逾期不候

对于已经熟悉 PHP 开发的人来说,这篇博文可能显得有点基础,希望作者能够提供一些更高级的数组操作技巧!

    有20位网友表示赞同!

PHP数组合并及操作
久爱不厌

PHP 的数组合并与运算确实是一项重要的技能,掌握了这些知识点,能够让我们写出更加高效和简洁的代码。 感谢作者分享这份宝贵资源!

    有15位网友表示赞同!

PHP数组合并及操作
淡写薰衣草的香

我一直在学习 PHP 开发,这篇博文让我受益匪浅,尤其是在数组合并与运算方面有了更深入的理解。感谢作者对我们PHP开发者们的贡献!

    有10位网友表示赞同!

PHP数组合并及操作
闷骚闷出味道了

希望以后能看到更多关于PHP数组高级操作的文章,比如如何使用递归或者闭包进行数组处理等

    有19位网友表示赞同!

PHP数组合并及操作
冷青裳

我之前在学习数组的时候遇到了很多困惑,这个博文解开了我的疑惑! 感谢作者!

    有19位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/143771.html

Like (0)
小su的头像小su
Previous 2024年9月19日 上午7:39
Next 2024年9月19日 上午7:42

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注