2013-07-19 57 views
3

大家好if语句,PHP:数组里面

这里是我的代码:

if ($value==0) 
{ 
     $array = array(
     "NAMES"   => array("John", "Sara", "Mark"), 
     "LASTNAMES"  => array ("Smith", "Lockwood", "Grant") 
     ); 
} 
else 
{ 
     $array = array(
     "NAMES"   => array("John", "Sara", "Mark"), 
     "LASTNAMES"  => array ("Smith", "Lockwood", "Grant"), 
     "ITEMPURCHASED"  => array ("DVD", "Book", "Comic") 
     ); 
} 

正如你可以看到我reapeating整个阵列码只是因为ITEMPURCHASED元素。

有没有办法不重复整个数组代码?可以在只添加ITEMPURCHASED元素的数组内使用if?如果是这样,怎么样?

由于一吨

回答

11
$array = array(
    "NAMES" => array("John", "Sara", "Mark"), 
    "LASTNAMES" => array ("Smith", "Lockwood", "Grant") 
); 

if ($value != 0){ 
    $array['ITEMPURCHASED'] = array ("DVD", "Book", "Comic"); 
} 

或者,你可以,如果$价值不是用ternary operator等于0的值设置为NULL。

$array = array(
    "NAMES" => array("John", "Sara", "Mark"), 
    "LASTNAMES" => array ("Smith", "Lockwood", "Grant"), 
    "ITEMPURCHASED" => ($value != 0) ? array ("DVD", "Book", "Comic") : null 
); 
+0

你发布的第一个选项效果很好。 fyi只有null选项的问题是使用选择字段时,选择选项仍然存在,但值为空。 – SlickRemix

+0

简单而优秀的解决方案。谢谢。 –

1
$array = array(
    "NAMES"   => array("John", "Sara", "Mark"), 
    "LASTNAMES"  => array ("Smith", "Lockwood", "Grant") 
    ); 
    if($value != 0) { 
     $array["ITEMPURCHASED"] = array ("DVD", "Book", "Comic"); 
    } 
1

尝试这样

$array = array(
       "NAMES"  => array("John", "Sara", "Mark"), 
       "LASTNAMES" => array ("Smith", "Lockwood", "Grant") 
     ); 
if($val != 0) { 
    $array['ITEMPURCHASED'] = => array ("DVD", "Book", "Comic"); 
} 

只要把普通数组退出循环,并检查条件,如果真那么剩下的ITEMPURCHASED基于阵列追加到主阵列。

1

是的,你可以通过下面的代码:

$array = $array = array(
     "NAMES"   => array("John", "Sara", "Mark"), 
     "LASTNAMES"  => array ("Smith", "Lockwood", "Grant") 
    ); 
if ($value != 0) 
     $array["ITEMPURCHASED"] = array ("DVD", "Book", "Comic"); 
} 

或者你可以使用PHP的array_merge功能。 那么代码将是:

if ($value != 0) 
      $arrar1 = array("ITEMPURCHASED" => array ("DVD", "Book", "Comic")); 
      $array = array_merge($array,$array1); 
} 
0
$array = array(
    "NAMES" => array("John", "Sara", "Mark"), 
    "LASTNAMES" => array ("Smith", "Lockwood", "Grant") 
); 

if ($value!=0) 
{ 
    $array["ITEMPURCHASED"] = array ("DVD", "Book", "Comic"); 
} 
0

不,你不能当阵列中使用。您可以使用三元运算符根据数组构造函数中的某些条件来更改值,但是由于您不想设置项目,所以这也不是一个选项。你可以像下面这样做虽然:

$array = array(
    "NAMES"   => array("John", "Sara", "Mark"), 
    "LASTNAMES"  => array ("Smith", "Lockwood", "Grant") 
); 

if ($value ! =0) 
    $array['ITEMPURCHASED'] = array ("DVD", "Book", "Comic"); 
0

首先创建数组,如的第一部分,如果

然后使用(前如果复制的代码):

if ($value != 0) { 
    $array['ITEMPURCHASED'] = ...; 
} 
0

你可以这样做

$array = array(
    "NAMES" => array("John", "Sara", "Mark"), 
    "LASTNAMES" => array ("Smith", "Lockwood", "Grant") 
); 

if ($value!=0) 
{ 
    $array["ITEMPURCHASED"] = array ("DVD", "Book", "Comic"); 
}