PHP数组兴趣爱好,php数组

今天在做项目的时候,想将多个数组进行去重合并的操作。在此前合并数组我一直用的是array_merge()这个函数,今天我百度了一下,原来还有‘+'号,和array_merge_recursive函数。

下面是一段对比的代码

48304ba5e6f9fe08f3fa1abda7d326ab.png

$array1 = array(2,4,"color" => "red");

$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);

$result = array_merge($array1, $array2);

echo "----------------array_merge---------------".PHP_EOL;

print_r($result);

echo "----------------+++++++++++---------------".PHP_EOL;

print_r($array1+$array2);

echo "----------------array_merge_recursive---------------".PHP_EOL;

print_r(array_merge_recursive($array1,$array2));

48304ba5e6f9fe08f3fa1abda7d326ab.png

结果如下所示

48304ba5e6f9fe08f3fa1abda7d326ab.png

----------------array_merge---------------Array(

[0] => 2

[1] => 4

[color] => green

[2] => a

[3] => b

[shape] => trapezoid

[4] => 4)----------------+++++++++++---------------Array(

[0] => 2

[1] => 4

[color] => red

[shape] => trapezoid

[2] => 4)----------------array_merge_recursive---------------Array(

[0] => 2

[1] => 4

[color] => Array

(

[0] => red

[1] => green

)

[2] => a

[3] => b

[shape] => trapezoid

[4] => 4)

48304ba5e6f9fe08f3fa1abda7d326ab.png

对比array_merge和+以及array_merge_recursive结果的”color”的值我们可以看出:

1.对于相同的字符串索引,

array_merge则会用后面的值覆盖前面出现的值;

+会用前面出现过的值覆盖后面相同的key;

array_merge_recursive则会把相同的索引放到一个数组里面,增加数组的维度;

2.对于相同的数字索引,

array_merge则会给重复的值重建索引(索引值从0开始);

+仍然是用前面出现过的值覆盖后面的值;

array_merge_recursive和array_merge的处理方法一样。

但是这只是把数组进行合并,我做合并的同时还想要去重应该怎么办呢,那就用到了另外两个函数array_flip()函数和array_keys() 函数

要讲到数组合并与去重,这里就不得不提array_flip()函数,而这个函数也是数组键值的翻转函数。

For example:

48304ba5e6f9fe08f3fa1abda7d326ab.png

$arr=array('10','11','12');$arr2=array('12','13','14');$arr3=array('14','15','16');

print_r(array_flip($arr)+array_flip($arr2)+array_flip($arr3));

output:

Array ( [10] => 0 [11] => 1 [12] => 2 [13] => 1 [14] => 2 [15] => 1 [16] => 2 )

48304ba5e6f9fe08f3fa1abda7d326ab.png

1.单数组去重复

array_unique($arrTest)

array_unique() 函数移除数组中的重复的值,并返回结果数组。

当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。

返回的数组中键名不变。

48304ba5e6f9fe08f3fa1abda7d326ab.png

$a=array("a"=>"red","b"=>"green","c"=>"red");

print_r(array_unique($a));

?>

运行结果:Array ( [a] => red [b] => green )

48304ba5e6f9fe08f3fa1abda7d326ab.png

//2.多数组去重复

array_keys(array_flip($arr1)+array_flip($arr2))

array_keys() 函数返回包含数组中所有键名的一个新数组。

如果提供了第二个参数,则只返回键值为该值的键名。

返回包含数组中所有键名的一个新数组:

48304ba5e6f9fe08f3fa1abda7d326ab.png

$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");

print_r(array_keys($a));

?>

运行结果:Array ( [a] => red [b] => green )

Array ( [0] => Volvo [1] => BMW [2] => Toyota )

48304ba5e6f9fe08f3fa1abda7d326ab.png

对多个数组合并去重技巧

48304ba5e6f9fe08f3fa1abda7d326ab.png

$a = array('1001','1002');

$b = array('1002','1003','1004');

$c = array('1003','1004','1005');

$d = array_keys(array_flip($a) + array_flip($b) + array_flip($c));

48304ba5e6f9fe08f3fa1abda7d326ab.png

结合上边这些函数的分析和使用,相信以后日常对数组合并已经基本不成问题了。

标签:flip,merge,数组,Array,php,array,red

来源: https://www.cnblogs.com/tongtong0601/p/10880449.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来扮演 CSDN 开发的 C 知道 AI,回答你的问题。 要使用$ POST输出表单内的兴趣爱好数组,需要通过相关的 HTML 表单页面进行提交。在页面中,需要有一个表单区域,其中包含了用户可以输入兴趣爱好的相关内容,提交按钮和数据提交方式等信息。 首先,需要定义一个表单,示例如下: ``` <form action="submit.php" method="POST"> <label for="hobbies">请选择您的兴趣爱好:</label><br> <input type="checkbox" name="hobbies[]" value="篮球">篮球<br> <input type="checkbox" name="hobbies[]" value="足球">足球<br> <input type="checkbox" name="hobbies[]" value="游泳">游泳<br> <input type="checkbox" name="hobbies[]" value="健身">健身<br><br> <input type="submit" name="submit" value="提交"> </form> ``` 在表单中,我们使用了多选框控件来让用户选择兴趣爱好。其中,`name="hobbies[]"` 的命名方式表明了这是一个数组型变量,选择的兴趣爱好会作为数组元素传递给后台的 PHP 脚本。 当用户点击提交按钮时,表单会使用 POST 方法提交到 submit.php 脚本。在这个脚本中,可以通过 `$_POST` 超全局数组来获取表单提交的数据,包括兴趣爱好数组。 示例如下: ``` if(isset($_POST['submit'])){ $hobbies = $_POST['hobbies']; echo "您选择的兴趣爱好是:"; foreach($hobbies as $hobby){ echo $hobby . "<br>"; } } ``` 在 PHP 脚本中,可以通过 `$_POST['hobbies']` 来获取兴趣爱好数组,并使用 foreach 循环来逐个输出每个兴趣爱好。 以上就是如何使用$ POST输出表单内的兴趣爱好数组的方法,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值