当key有分级符时,递归改变数组的层次结构
public function test()
{
$arr = ['tack_pct'=>10, 'finish.pct.all'=>11, 'finish.pct'=>2, 'finish.in'=>23, 'user_name'=>'hy'];
$array = [];
foreach($arr as $key => $value){
if (strpos($key, '.')) {
// print_r($k);die;
$array[] = self::getLevelArray($data = [], $key, $value);
} else {
$array[$key] = $value;
}
}
}
public static function getLevelArray($arr, $key, $value)
{
if(empty($key)){
$arr = $value;
return $arr;
}
$keyArray = explode('.', $key);
$thisKey = array_shift($keyArray);
if (!isset($arr[$thisKey])) {
$arr[$thisKey] = [];
}
$arr[$thisKey] = self::getLevelArray([], implode('.', $keyArray), $value);
// print_r($arr);die;
return $arr;
}
求数组中所有的数字和字符串之和
public function test()
{
$array = [
'task_pct'=> 2,
'finish_pct'=>[
'f'=>3,
'i'=>'4',
'n'=>[
'p'=>5,
'c'=>'6',
't'=>'h'
]
],
'username'=>'hy'
];
$res = self::getArraySum($array);
}
public static function getArraySum($array)
{
if(!is_array($array)){
return $array;
}
$v = 0;
foreach ($array as $key => $value) {
if (is_array($value)) {
$v += self::getArraySum($value);
} else {
$v += $value;
}
}
return $v;
}