如何在数组中使用if / else

时间:2012-11-21 23:40:26

标签: php arrays if-statement

基本上我有一段相对复杂的代码,其中有几个数组互相嵌套。我相信我想做的事情并非严格可能:

$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
    ...

我知道以上是不可能的。我知道我可以使用三元运算符但是当我尝试时它不起作用。我知道有更好的方法来解决这个问题,但据我所知,所有这些都会让我改变整个结构(因为有很多数组互相嵌套)我不想做,所以我的问题是,有没有办法在没有改变整个事情的情况下用这个有条件的工作?

非常感谢

4 个答案:

答案 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,