Skip to main content

数组类

一、随机打乱多维数组的顺序(key 不变)

  • 请求参数类型:Array

  • 返回值类型:Array

  • 返回值含义:返回被打乱顺序(但 key 不变)的数组

public function shuffleDoubleArray($doubleArray)
{
if (!is_array($doubleArray)) {
return $doubleArray;
}
$keys = array_keys($doubleArray);
shuffle($keys);
$random = array();
foreach ($keys as $key) {
$random[$key] = $doubleArray[$key];
}
return $random;
}
$obj = new ArrayHandle();
$arr = [
0 => [
'name' => 'tomlibao',
'age' => 24
],
1 => [
'name' => '光头强',
'age' => 20
],
2 => [
'name' => '潮巴蛋',
'age' => 30
]
];
$res = $obj->shuffleDoubleArray($arr);
print_r($res);

输出:

Array
(
[1] => Array
(
[name] => 光头强
[age] => 20
)

[2] => Array
(
[name] => 潮巴蛋
[age] => 30
)

[0] => Array
(
[name] => tomlibao
[age] => 24
)

)

二、对二维数组的某个列进行正倒叙排列

  • 请求参数类型:Array,string,常量(非字符串,正序:SORT_ASC,倒序:SORT_DESC)

  • 返回值类型:Array

  • 返回值含义:返回被打乱顺序(但 key 不变)的数组

public function arraySort($doubleArray, $keys, $sort = SORT_DESC)
{
$keysValue = [];
foreach ($doubleArray as $k => $v) {
$keysValue[$k] = $v[$keys];
}
array_multisort($keysValue, $sort, $doubleArray);
return $doubleArray;
}
$obj = new ArrayHandle();
$arr = [
0 => [
'name' => 'tomlibao',
'age' => 24
],
1 => [
'name' => '光头强',
'age' => 20
],
2 => [
'name' => '潮巴蛋',
'age' => 30
]
];
$res = $obj->arraySort($arr ,'age', SORT_ASC);
print_r($res);

输出:

Array
(
[0] => Array
(
[name] => 光头强
[age] => 20
)

[1] => Array
(
[name] => tomlibao
[age] => 24
)

[2] => Array
(
[name] => 潮巴蛋
[age] => 30
)

)
info

注意:第三个参数不能使用字符串,而是使用常量。

三、获取多维数组某一列的总和

  • 请求参数类型:Array,string

  • 返回值类型:string

  • 返回值含义:返回多维数组某一列计算后的总和

$obj = new ArrayHandle();
$arr = [
0 => [
'name' => 'tomlibao',
'age' => 24
],
1 => [
'name' => '光头强',
'age' => 20
],
2 => [
'name' => '潮巴蛋',
'age' => 30
]
];
$res = $obj->getArrFieldSum($arr ,'age');
print_r($res);
public function getArrFieldSum($doubleArray, $field)
{
$array = array_column($doubleArray, $field);
return array_sum($array);
}

输出:74