как использовать функцию call_user_func_array () в laravel-5.6? - PullRequest
0 голосов
/ 02 мая 2019

Я использую GitHub репо (https://gist.github.com/mcaskill/baaee44487653e1afc0d#file-function-array-group-by-php) код, и я использую этот код репо в Laravel, и я получаю ошибку

ошибка:

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);
}

Я не использовал call_user_func_array, прежде чем я не знаю, как использовать эту функцию в Laravel, также у меня есть попытки $this->array_group_by, но затем я получаю ошибку:

Слишком мало аргументов для функции App \ Http \ Controllers \ abcController :: array_group_by (), 1 передано в ..

1 Ответ

0 голосов
/ 02 мая 2019

Пожалуйста, поместите функцию 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...