Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在数组中使用if/else_Php_Arrays_If Statement - Fatal编程技术网

Php 如何在数组中使用if/else

Php 如何在数组中使用if/else,php,arrays,if-statement,Php,Arrays,If Statement,基本上,我有一段相对复杂的代码,其中有几个相互嵌套的数组。我相信我想做的事情严格来说是不可能的: $selector = true, $main_array = array( 'general' = array( 'another_array' = array( 'option1' = array( 'title' = 'Some Title', 'type' = 'select', if ($selector == true) {

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

$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
    ...
我知道上述是不可能的。我知道我可以使用三元运算符,但当我尝试时,它不起作用。我知道有更好的方法来解决这个问题,但据我所知,所有这些方法都需要我改变整个结构(因为有许多数组嵌套在彼此之间),这是我不想做的,所以我的问题是,有没有一种方法可以让这个条件工作,而不需要我改变整个结构


非常感谢

你说得对:你想做的事不可能按你想的方式去做。你必须重新构造你的代码。您可以单独将每个元素推入数组,必要时使用
if
语句确定推入的内容。

使用三元运算符。对于三元运算符,这是:

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')
                ...

我假设您实际上并没有尝试将数组分配给字符串文本,所以明智地添加一些'>'

是的,如果我理解你在寻找什么,它可以通过三元运算完成,如下所示:

$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'
 )))));

好吧,如果你下定决心使用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, 如果($selector==true){ $preset2=数组( “标题”=“某些标题”, '类型'='选择' ); } 其他的 { $preset2=数组(…); } $main_数组=数组( “常规”=数组( “另一个数组”=数组( “option1”=数组( “标题”=“某些标题”, '类型'='选择'),
'option2'=$preset2,太好了!我以前试过使用三元运算,但我肯定是ben误用了,因为我一直都在出错。现在它工作得很好。谢谢!