3 回答
TA贡献2019条经验 获得超9个赞
试试下面的代码也许它会有所帮助。
/*
using array column will get the result in
Array ( [Manager] => 3 [Director] => 2 )
*/
$array_column = array_column($array, 'total_count', 'user_type');
//Create new array like below
$add_array = array('Manager'=>'0', 'Director'=>'0', 'Trainee'=>'0',);
//using array_merge merge add_array and array_column
$new_array = array_merge($add_array, $array_column);
//using array_walk_recursive get the requird result
array_walk_recursive($new_array, function($item, $key) use (&$final_array){
$final_array['labels'][]=$key;
$final_array['dataset'][]=$item;
});
echo "<pre>";
print_r($final_array);
?>
案例 1- 如果受训者不在数组 DEMO 中
案例 2 - 如果 Manager 和 Director 都不在阵列 DEMO 中
案例 3- 如果主管不在 -演示
TA贡献1834条经验 获得超8个赞
这是您可以使用带有 splat(...) 运算符的 array_combine 和 array_map 的脚本
$arr = array_combine(['labels','dataset'],array_map(null, ...$arr));
if(!in_array('Trainee',$arr['labels'])){
array_push($arr['labels'],'Trainee');
array_push($arr['dataset'],0);
}
print_r($arr);die;
array_combine — 通过使用一个数组作为键和另一个作为其值的数组来创建一个数组
注意:-在 array_map 中,NULL 可以作为值传递给回调以对多个数组执行 zip 操作。如果只提供了 array1,array_map() 将返回输入数组。总之就是执行数组操作的转置
输出:-
Array
(
[labels] => Array
(
[0] => Manager
[1] => Director
[2] => Trainee
)
[dataset] => Array
(
[0] => 3
[1] => 2
[2] => 0
)
)
TA贡献1963条经验 获得超6个赞
尝试这个
$arr = array_combine(['labels','dataset'], array_map(null, $arr));
制作一个将不存在的 user_type 添加到数组中的函数
function setUserType($userType, $array) {
if(!in_array($userType, $array['labels'])){
array_push($array['labels'], $userType);
array_push($array['dataset'], 0);
}
return $array;
}
通过任何用户类型调用函数,如“经理”、“实习生”、“导演”
$arr = setUserType('Trainee', $arr);
或者创建一个包含所有用户类型的数组并运行一个循环
foreach(['Manager', 'Trainee', 'Director'] as $type) {
$arr = setData($type, $arr);
}
打印并显示最终值
print_r($arr);
die();
演示https://3v4l.org/UbiXn
- 3 回答
- 0 关注
- 214 浏览
添加回答
举报