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'] = '数据重复';
}
}
}