PHP数组组装小技巧

1.PHP比较实用的二维数组函数,array_combine(), array_column()实现数据的组装 

$orderInfo = array(
    array('userid' => 12, 'mobile' => 18317776781, 'order_code' => 123),
    array('userid' => 15, 'mobile' => 18317776791, 'order_code' => 124),
    array('userid' => 13, 'mobile' => 18317776793, 'order_code' => 121),
    array('userid' => 12, 'mobile' => 18317776793, 'order_code' => 122),
);
$userInfo = array(
	array('userid' => 12,  'name' => 'a', 'age' => 20),
	array('userid' => 13,  'name' => 'b', 'age' => 21),
	array('userid' => 14,  'name' => 'c', 'age' => 22),
);

$userInfo = (array_combine(array_column($userInfo, 'userid'), $userInfo));
foreach ($orderInfo as $key => $value) {
	isset($value['userid']) && !empty($value['userid']) && $orderInfo[$key]['name'] = $userInfo[$value['userid']]['name'] ?? '';
	isset($value['userid']) && !empty($value['userid']) && $orderInfo[$key]['age'] = $userInfo[$value['userid']]['age'] ?? '';
}
echo '<pre>';
var_dump($orderInfo);die;

2.改变数组中所有的值

二维数组的排序问题 

//二位数组根据指定的字段进行排序
$studentInfo = array(
	array('id' => 35, 'name' => 'liyanping', 'age' => 25),
	array('id' => 20, 'name' => 'yanping',   'age' => 20),
	array('id' => 16, 'name' => 'ziyanping', 'age' => 26),
	array('id' => 36, 'name' => 'piyanping', 'age' => 18),
);
$keyArr = array_column($studentInfo, 'id');
array_multisort($keyArr, SORT_DESC, $studentInfo);

3.数组去重做标记,多用于excel导数据

//数组中个别字段值相同该数据重复做标记
$arrList = array(
	array('class_code' => '01', 'mobile' => 18317776781, 'addtime' => '2018-11-03 10:00:12'),
	array('class_code' => '02', 'mobile' => 18317776701, 'addtime' => '2018-11-03 10:00:12'),
	array('class_code' => '01', 'mobile' => 18317776780, 'addtime' => '2018-11-03 10:00:12'),
	array('class_code' => '04', 'mobile' => 18317776780, 'addtime' => '2018-11-03 10:00:12'),
	array('class_code' => '05', 'mobile' => 18317776780, 'addtime' => '2018-11-03 10:00:12'),
	array('class_code' => '06', 'mobile' => 18317776781, 'addtime' => '2018-11-03 10:00:12'),
	array('class_code' => '07', 'mobile' => 18317776782, 'addtime' => '2018-11-03 10:00:12'),
	array('class_code' => '09', 'mobile' => 18317776783, 'addtime' => '2018-11-03 10:00:12'),
	array('class_code' => '09', 'mobile' => 18317776784, 'addtime' => '2018-11-03 10:00:12'),
	array('class_code' => '10', 'mobile' => 18317776785, 'addtime' => '2018-11-03 10:00:12'),
	array('class_code' => '11', 'mobile' => 18317776786, 'addtime' => '2018-11-03 10:00:12'),
	array('class_code' => '12', 'mobile' => 18317776787, 'addtime' => '2018-11-03 10:00:12'),
);
foreach ($arrList as $key => $value) {
	if (isset($arrList[$key]['class_code']) && empty($arrList[$key]['class_code'])) {
		$strNum = $value['class_code'] . $value['mobile'];
		if (!in_array($strNum, $arrError)) {
			array_push($strNum, $arrError);	
		} else {
			$arrList[$key]['message'] = '数据重复';
		}
		
	}

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值