多个一维数组拆分合并为二维数组

本文介绍了两种常见的PHP数组拆分场景及其解决方案。一种是一维数组的拆分,使用array_map函数将多个一维数组合并成多维数组。另一种是处理前端传来的多维数组结构,通过遍历的方式重新组织数组数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一下工作中遇到的数据拆分问题。

场景一:

一维数组的结构为[value,value … ,value];

$arr1 = array('张三','李四','王五')$arr2 = array(18,19,20);
$arr3 = array('man','man','women');
<?php
	$arr1 = array('张三','李四','王五');
	$arr2 = array(18,19,20);
	$arr3 = array('man','man','women');
	$arr4 = array_map(function($a,$b,$c){
	return [$a,$b,$c];
	},$arr1,$arr2,$arr3);
	
	print_r($arr4)
?>

运行结果:

Array
(
    [0] => Array
        (
            [0] => 张三
            [1] => 18
            [2] => man
        )

    [1] => Array
        (
            [0] => 李四
            [1] => 19
            [2] => man
        )

    [2] => Array
        (
            [0] => 王五
            [1] => 20
            [2] => women
        )

)

场景二:一维数组的数据结构为key =>[value1,value2,…,value3];

这种就是前台的input中的name属性是一个数组,比如插入多条数据,后台接收的时候就要拆分数据。

<input type='text' name='productNo[]' />
<input type='text' name='productName[]' />
<input type='text' name='incentiveStandard[]' />
<input type='text' class='withdrawTime' name='effectiveDateStart[]' />
<input type='text' class='withdrawTime' name='effectiveDateEnd[]' />
'name' => array('张三','李四','王五'),
'age' =>  array(18,19,20),
'sex' =>  array('man','man','women')
<?php
	$data =array(
		'name' => array('张三','李四','王五'),
		'age' =>  array(18,19,20),
		'sex' =>  array('man','man','women')
	);
	$arr = [];
	$i = 0;
	foreach ($data as $k1 => $v1){
	    $j = 0;
	    foreach ($v1 as $k2 => $v2){
	        $arr[$j][$k1] = $v2;
	        $j++;
	    }
	    $i++;
	  }
	print_r($arr)
?>

运行结果:

Array
(
    [0] => Array
        (
            [name] => 张三
            [age] => 18
            [sex] => man
        )

    [1] => Array
        (
            [name] => 李四
            [age] => 19
            [sex] => man
        )

    [2] => Array
        (
            [name] => 王五
            [age] => 20
            [sex] => women
        )

)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值