我正在使用github repo(https://gist.github.com/mcaskill/baaee44487653e1afc0d#file-function-array-group-by-php)代码,并且在laravel中使用了该repo代码,但出现错误
错误:
ErrorException(E_WARNING) call_user_func_array()期望参数1为有效的回调,找不到函数'array_group_by'或无效的函数名称
代码:
foreach ($grouped as $key => $value) {
$params = array_merge([ $value ], array_slice($args, 2, func_num_args()));
$grouped[$key] = call_user_func_array("array_group_by", $params);
}
在我不知道如何在Laravel中使用此功能之前,我还没有使用过call_user_func_array
,但我也尝试过$this->array_group_by
,但是随后出现错误:
函数App \ Http \ Controllers \ abcController :: array_group_by()的参数太少,传入了1个。
答案 0 :(得分:0)
在调用array_group_by()函数之前,请在代码上方添加以下函数,或在代码中使用此文件
function array_group_by(array $array, $key)
{
if (!is_string($key) && !is_int($key) && !is_float($key) && !is_callable($key) ) {
trigger_error('array_group_by(): The key should be a string, an integer, or a callback', E_USER_ERROR);
return null;
}
$func = (!is_string($key) && is_callable($key) ? $key : null);
$_key = $key;
// Load the new array, splitting by the target key
$grouped = [];
foreach ($array as $value) {
$key = null;
if (is_callable($func)) {
$key = call_user_func($func, $value);
} elseif (is_object($value) && property_exists($value, $_key)) {
$key = $value->{$_key};
} elseif (isset($value[$_key])) {
$key = $value[$_key];
}
if ($key === null) {
continue;
}
$grouped[$key][] = $value;
}
// Recursively build a nested grouping if more parameters are supplied
// Each grouped array value is grouped according to the next sequential key
if (func_num_args() > 2) {
$args = func_get_args();
foreach ($grouped as $key => $value) {
$params = array_merge([ $value ], array_slice($args, 2, func_num_args()));
$grouped[$key] = call_user_func_array('array_group_by', $params);
}
}
return $grouped;
}