1

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

$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

4 回答 4

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'
 )))));
于 2012-11-21T23:57:39.150 回答
0

你是对的:你想做的事情不可能按照你想做的方式去做。您将不得不重组您的代码。您可以将每个元素单独推送到数组中,if在必要时使用语句来确定推送的内容。

于 2012-11-21T23:42:52.763 回答
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')
                ...
于 2012-11-21T23:57:14.793 回答
0

好吧,如果您决定使用 if/else 而不是三元组,那么您可以早一点得出一些结果。

       if ($selector == true) {
    $preset2 = 数组(
     'title' = '一些标题',
     '类型' = '选择'
     );
    }
    别的
    {
     $preset2 = 数组(...);
    }

 $main_array = 数组(
  '一般' = 数组(
   '另一个数组' = 数组(
    'option1' = 数组(
     'title' = '一些标题',
     “类型”=“选择”),
    'option2' = $preset2,
于 2012-11-22T00:47:47.583 回答