-
// 二维,根据某个键的数值排序
function order_key_array($array, $key, $order){
if (!$array){return [];}
if (!$order){$order = 'desc';}
// 选择排序法
$temp = 0;
for($i = 0;$i < count($array) - 1;$i++){
$minVal = $array[$i][$key]; //假设$i就是最小值
$minValIndex = $i;
for($j = $i+1;$j < count($array);$j++){
if ($order == 'desc'){
if($minVal < $array[$j][$key]){ //从小到大排列
$minVal = $array[$j][$key]; //找最大值
$minValIndex = $j;
}
}else{
if($minVal > $array[$j][$key]){ //从小到大排列
$minVal = $array[$j][$key]; //找最小值
$minValIndex = $j;
}
}
}
$temp = $array[$i][$key];
$array[$i][$key] = $array[$minValIndex][$key];
$array[$minValIndex][$key] = $temp;
}
$new_array = $array;
return $new_array;
}
-
// 两个键去重,两个键为相同值时去重
function group_arrays($info, $db_key1, $db_key2){
$have = [];
$array = [];
$index = [];
for($m=0; $m<count($info); $m++){
$has1 = $info[$m][$db_key1];
$has2 = $info[$m][$db_key2];
if (in_array([$has1=>$has2], $array)){
// 存在则跳过
}else{
$array[] = [$has1=>$has2];
$index[] = $m;
}
}
foreach ($index as $value){
$have[] = $info[$value];
}
return $have;
}
-
// 利用数组去重数组+json这样的一维数组,一般为直接从数据库查询的数组结果,去重某个键
// group_array(未去重数组, 要去重的json键名)
// 服务器环境不能使用group语法,所以做这个去重
function group_array($info, $db_key){
$have = [];
$array = [];
for($m=0; $m<count($info); $m++){
$has_id = $info[$m][$db_key];
$array[] = $has_id;
}
$array = array_unique($array); // 返回 索引键=>id
foreach ($array as $key=>$value){
$have[] = $info[$key];
}
return $have;
}
-
// 求数组中某列中,所有同名键的值的和
function db_array_sum($array, $key){
return array_sum(array_column($array, $key));
}
-