Как принимались многоместные вводы неизвестного имени из запроса laravel

#laravel

Вопрос:

Здравствуйте, у меня есть запрос с неизвестным именем, например, Game234_3v3player_3 и т. Д. Из-за того, что все входные данные обнуляются, а номер игры неизвестен, я проверил его следующим образом:

 $request->validate([
        '*_2v2player_*' => [
            'exists:users,name',
            'nullable',
        ],
        '*_2v2enemyPlayer_*' => [
            'exists:enemy_players_list,nickname',
            'nullable',
        ],
        '*_3v3player_*' => [
            'exists:users,name',
            'nullable',
        ],
        '*_3v3enemyPlayer_*' => [
            'exists:enemy_players_list,nickname',
            'nullable',
 

При проверке это работает. Но я хочу хранить части запроса в переменной. То, что я пытался, это:

         $data = $request->only([
        '*_1v1enemyPlayer_*',
        '*.2v2enemyPlayer.*',
        '*3v3enemyPlayer*',
        ]);
 

И т.д…
Однако в этом примере он возвращает пустой массив любым способом /./*_. С точками, тире и т. Д. И т. Д.
Как я могу тогда принять в переменную только несколько атрибутов запроса с неизвестными именами?
Спасибо.

Ответ №1:

Вы можете понять свои ключи запроса с array_keys($request->all()) помощью .

Наконец, вы можете решить, какой ключ вы ищете.

Комментарии:

1. Это не поможет, потому что я хочу принимать только входные данные с именем enemyPlayers, а поскольку другие входные данные могут быть обнулены, индексирование не помогает. Там больше входных данных, чем в этом примере, я не могу передать в array_keys() «Вражеские игроки » в качестве аргумента. Это не работает.

2. Ну, это помогает, конечно, но по-другому 😉

3. @WNR Я так счастлив, что помог тебе, удачи 😉

Ответ №2:

Хорошо, сделал это по-другому.

     $enemyPlayers = [];

    $requestArray = array_keys($request->all());
    foreach($requestArray as $player)
    {
        if (str_contains($player, 'enemyPlayer')) {
            array_push($enemyPlayers, $player);
        }
    }