我想将数组中的位置设置为等于存在的第一个$_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语句,它们先检查然后设置是否存在,但是看起来很笨拙。
答案 0 :(得分:3)
在PHP> = 7.0中,您可以使用Null coalescing operator并将它们链接起来:
$options = $_GET['Search1']['searchoption'] ??
$_GET['Search2']['searchoption'] ??
$_GET['Search3']['searchoption'] ??
$_GET['Search4']['searchoption'] ??
$_GET['searchBar']['searchoption'] ??
$_GET['searchOptions'] ?? [];
如果未设置任何内容,则$options
是一个空数组[]
,如果这不是您想要的,只需替换它即可。