2013-07-19 52 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"); 
}