Используйте первую переменную isset () - PullRequest
0 голосов
/ 16 мая 2019

Я хотел бы установить позицию в массиве равной первому $_GET параметру, который существует.

Вот код, который у меня сейчас есть и который не работает точно так, как мне хотелось бы, поскольку он использует массивы:

'searchOptions'=>array_merge(
                isset($_GET['Search1']['searchoption']) ? $_GET['Search1']['searchoption'] : array(),
                isset($_GET['Search2']['searchoption']) ? $_GET['Search2']['searchoption'] : array(),
                isset($_GET['Search3']['searchoption']) ? $_GET['Search3']['searchoption'] : array(),
                isset($_GET['Search4']['searchoption']) ? $_GET['Search4']['searchoption'] : array(),
                isset($_GET['searchBar']['searchoption']) ? $_GET['searchBar']['searchoption'] : array(),
                isset($_GET['searchOptions']) ? $_GET['searchOptions'] : array()
            ),

Есть ли лучший способ сделать это, чтобы избежать array_merge и работать правильно? В настоящий момент это не работает, если в параметре $_GET передана строка, поскольку она должна быть массивом.

Способ, которым это работает, заключается в том, что только одна из проверяемых переменных $_GET когда-либо будет существовать, так как если она существует, остальные из них не имеют значения.

Есть ли способ просто сделать что-то похожее на то, что у меня есть, но не рассматривать это, как будто я объединяю массивы?

Это может быть разбито на множество операторов if, которые проверяют, а затем устанавливают, существует ли оно, но кажется довольно неуклюжим.

1 Ответ

3 голосов
/ 17 мая 2019

В PHP> = 7.0 вы можете использовать оператор объединения Null и объединить их в цепочку:

$options =  $_GET['Search1']['searchoption']   ??
            $_GET['Search2']['searchoption']   ??
            $_GET['Search3']['searchoption']   ??
            $_GET['Search4']['searchoption']   ??
            $_GET['searchBar']['searchoption'] ??
            $_GET['searchOptions']             ?? [];

Если ничего не задано, $options - пустой массив [],если это не то, что вы хотите, просто замените его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...