array_merge合并数组碰到的返回NULL的坑

最近在开发一个考试系统,组装考题的时候,需要将抽取的选择题、填空题等合并到一起。但可能会出现没有选择题,即选择题数组为空的情况。

		$ehquestion = string2array($r['ehquestion']);//获取考题信息
		$ehquestion = array_merge($ehquestion['questiontype1'],$ehquestion['questiontype2'],$ehquestion['questiontype3'],$ehquestion['questiontype4'],$ehquestion['questiontype5'],$ehquestion['questiontype6']);
		array_multisort(array_column($ehquestion,'questiontype'),SORT_ASC,$ehquestion);

按照上面的代码,var_dump( e h q u e s t i o n ) , 结 果 为 N U L L 。 仔 细 分 析 后 , 发 现 是 因 为 合 并 的 数 组 中 ehquestion),结果为NULL。 仔细分析后,发现是因为合并的数组中 ehquestion)NULLehquestion[‘questiontype5’]为NULL,结果,合并后的数组也变成了NULL。

查询资料得知,array_merge()可以合并多个数组,当其中某个值为null或其他非数组时,函数返回null,所以使用的时候要转义参数

array_merge( (array) a r r 1 , ( a r r a y ) arr1, (array) arr1,(array)arr2 ) 这样就不会返回null了;

于是改为:

		$ehquestion = string2array($r['ehquestion']);//获取考题信息
		$ehquestion = array_merge((array)$ehquestion['questiontype1'],(array)$ehquestion['questiontype2'],(array)$ehquestion['questiontype3'],(array)$ehquestion['questiontype4'],(array)$ehquestion['questiontype5'],(array)$ehquestion['questiontype6']);
		array_multisort(array_column($ehquestion,'questiontype'),SORT_ASC,$ehquestion);

结果就正常了。

另外附上相关知识介绍以及链接。
合并数组$arr1 + a r r 2 和 a r r a y m e r g e ( arr2 和array_merge( arr2arraymerge(arr1,$arr2);

1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)

2)键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值

array_merge可能会踩的坑
https://blog.csdn.net/qq_33636325/article/details/84106316

php数组合并用加号和用array_merge()的区别
https://blog.csdn.net/littlexiaoshuishui/article/details/82997707

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值