2017-06-19 18 views
1

我正在寫一個購物車系統,對於這個購物車動作,如果選擇的商品已經在購物車中,我希望函數不加任何東西,所以我把它留空。它是正確的做法,這樣做還是有任何專業的方式來做到PHP我可以給'If'留下一個空白的執行代碼嗎?

<?PHP 
............... 

     // Is product already in cart? If so, add nothing. 
     if(in_array($productName, array_keys($_SESSION["cart_item"]))) { 
    // do nothing...........so leave it blank? 
     } else { 
     // Product is not in cart, but we have other products in cart. 
     // So just add to existing cart array. 
     $_SESSION['cart_item'] = array_merge($_SESSION['cart_item'],$itemArray); 
     } 
    } 

    ?> 
+0

只是在條件 前面加上'!''如果(!in_array($產品名稱,array_keys($ _ SESSION [ 「cart_item」))){' 並刪除其他條件,並把其他條件代碼爲IF塊 –

+0

避免這樣的空白條件通常會更好,並且按照建議使用! (我個人更喜歡===錯誤 - 但無論如何)。有一件很重要的事情是,如果你最終得到這樣的空白條件就是發表評論,說它是故意的空白,這可以讓其他人知道這不是一個錯誤,但有一個原因。 –

回答

2

你可以留空,但恕我直言,這是最好的:??

if(!in_array($productName, array_keys($_SESSION["cart_item"]))) { 
    $_SESSION['cart_item'] = array_merge($_SESSION['cart_item'],$itemArray); 
    } 

您可以添加!到specifiy一個NOT操作,所以你可以刪除其他條件,你不需要離開if陳述空白

2

您可以,但爲什麼不只是切換條件?

<?PHP 
............... 

    // Is product not in cart? If so, add it. 
    if(!in_array($productName, array_keys($_SESSION["cart_item"]))) { 
$_SESSION['cart_item'] = array_merge($_SESSION['cart_item'],$itemArray); 
    } 
} 

?> 
0

因爲您識別產品在由數組的鍵車,而不是:

in_array($productName, array_keys($_SESSION["cart_item"])) 

你可以簡單地檢查:

array_key_exists($productName, $_SESSION["cart_item"]) 

這是同樣的驗證,但它運行速度更快。

更重要的是,您甚至不需要驗證密鑰是否存在。您可以使用union operator+),對於數組,第一個數組只能添加第二個數組中不存在於第一個數組中的鍵及其值。

總而言之,這增加了選擇的產品(第)的車可以作爲簡單的代碼:

$_SESSION['cart_item'] += $itemArray; 
1

如果IF後有空白的代碼塊,然後只需使用否定!

if (!in_array($productName, array_keys($_SESSION["cart_item"]))) { 

然後代碼應該更容易被其他開發者閱讀。

相關問題