基本上我有一段相对复杂的代码,其中有几个数组互相嵌套。我相信我想做的事情并非严格可能:
$selector = true,
$main_array = array(
'general' = array(
'another_array' = array(
'option1' = array(
'title' = 'Some Title',
'type' = 'select',
if ($selector == true) {
'option2' = array(
'title' = 'Some title',
'type' = 'select',
} else
...
我知道以上是不可能的。我知道我可以使用三元运算符但是当我尝试时它不起作用。我知道有更好的方法来解决这个问题,但据我所知,所有这些都会让我改变整个结构(因为有很多数组互相嵌套)我不想做,所以我的问题是,有没有办法在没有改变整个事情的情况下用这个有条件的工作?
非常感谢
答案 0 :(得分:3)
我假设您实际上并没有尝试将数组分配给字符串文字,因此明智地添加一些'>'
是的,如果我理解你在寻找什么,可以通过三元操作完成,如下所示:
$main_array = array(
'general' => array(
'another_array' => array(
'option1' => array(
'title' => 'Some Title',
'type' => 'select',
'option2' => (($selector == true) ?
array(
'title' => 'Some title',
'type' => 'select',
) : 'It was false'
)))));
答案 1 :(得分:0)
你是对的:你想做的事情不可能按照你想要的方式去做。您必须重新构建代码。您可以将每个元素分别推送到数组中,必要时使用if
语句来确定推送的内容。
答案 2 :(得分:0)
使用三元运算符。使用三元运算符,这个:
if($selector == true){
$foo = 'something';
} else {
$foo = 'something else';
}
可以成为:
$foo = ($selector == true) ? 'something' : 'something else';
您的示例代码如下所示:
$selector = true;
$main_array = array(
'general' => array(
'another_array' => array(
'option1' => array(
'title' => 'Some Title',
'type' => 'select',
'option2' => ($selector == true) ? array('title' = 'Some title','type' = 'select') : array('title' => 'Some other title', 'type' => 'Some other type')
...
答案 3 :(得分:0)
好吧,如果你的心脏被设置为使用if / else而不是三元组,你可以稍早地处理一些结果。
if ($selector == true) { $preset2 = array( 'title' = 'Some title', 'type' = 'select' ); } else { $preset2 = array( ... ); } $main_array = array( 'general' = array( 'another_array' = array( 'option1' = array( 'title' = 'Some Title', 'type' = 'select' ), 'option2' = $preset2,