2017-02-15 46 views
-3

我有一個數組,其中包含這些內容:'a','b','b','c'。順序並不總是相同的,有時它甚至有不同的字符串。我將如何去除數組中的'b'?從數組中刪除變量()

澄清:我使用array_diff()從$ _SESSION ['cart']中刪除字符串。但是如果兩個字符串相同,它將刪除兩個字符串。我如何才能刪除一個

購物車:

session_start(); 
ob_start(); 
    if (isset($_GET["delete"])) { 
     ob_clean(); 
     echo "<div class='background' id='page1'>"; 
     $todelete = $_GET["delete"]; 
     $_SESSION['cart'] = array_diff($_SESSION['cart'], array($todelete)); 

     if(isset($_SESSION['cart']) && !empty($_SESSION['cart'])) { 
       drawcart(); 
       drawclear(); 
     } 
     else { 
      drawempty(); 
     } 
    } 
    else { 
     ob_clean(); 
     echo "<div class='background' id='page1'>"; 
     if(isset($_SESSION['cart']) && !empty($_SESSION['cart'])) { 
      drawcart(); 
      drawclear(); 
     } 
     else { 
      drawempty(); 
     } 
    } 
    function drawcart() { 
     foreach ($_SESSION['cart'] as $key => $value) { 
      $unserializedItem = unserialize(base64_decode($value)); 
      echo " 
       <div class='container no-shadow cartitem' id='" . $value . "'> 
        <div class='row'> 
         <div class='twelve columns'> 
          <h2 class='no-padding2'>Envelop " . $unserializedItem["envelop"] . "</h2> 
         </div> 
         <div class='end'></div> 
        </div> 
        <div class='row' style='height: 6.625rem'> 
         <div class='three columns' style='height:calc(100% - 1rem);''> 
          <img class='high' src='img/220x110logo_links.png' alt=''> 
         </div> 
         <div class='five columns'> 
          <p>Aantal:</p> 
          <p>Aantal kleuren:</p> 
          <p>Papierkleur:</p> 
          <p>Vensterpositie:</p> 
          <p>Klepsluiting:</p> 
         </div> 
         <div class='four columns'> 
          <p>" . $unserializedItem["aantal"] . "</p> 
          <p>" . $unserializedItem["kleur"] . "</p> 
          <p>" . $unserializedItem["papier"] . "</p> 
          <p>" . $unserializedItem["venster"] . "</p> 
          <p>" . $unserializedItem["lock"] . "</p> 
         </div> 
         <div class='end'></div> 
        </div> 
        <div class='row'> 
         <div class='twelve columns'> 
          <a class='linkbutton' href='?delete=" . $value . "'>Verwijder item</a> 
         </div> 
         <div class='end'></div> 
        </div> 
       </div>"; 
     } 
    } 
    function drawclear() { 
     echo " 
      <div class='container no-shadow'> 
       <div class='row'> 
        <div class='twelve columns'> 
         <a class='linkbutton' href='clearwinkelwagen.php'>Winkelwagen legen</a> 
        </div> 
        <div class='end'></div> 
       </div> 
      </div>"; 
    } 
    function drawempty() { 
     echo "<div class='container no-shadow'> 
        <div class='row'> 
         <div class='twelve columns'> 
          <h1 class='no-padding2'>Winkelwagen is leeg.</h1> 
          <a class='no-padding2 linkbutton' href='../kies2/#page2'>Voeg enveloppen toe.</a> 
         </div> 
         <div class='end'></div> 
        </div> 
       </div>"; 
    }` 

ADDWINKELWAGEN.PHP(你在這裏從一個表單頁面發送):

session_start(); 

$optionsSelected = array(); 

if (isset($_GET["envelop"])) { 
$optionsSelected["envelop"] = $_GET["envelop"]; 
} 
if (isset($_GET["aantal"])) { 
$optionsSelected["aantal"] = rtrim(rtrim($_GET["aantal"], 'a'), 'b'); 
} 
if (isset($_GET["kleur"])) { 
$optionsSelected["kleur"] = $_GET["kleur"]; 
} 
if (isset($_GET["papier"])) { 
$optionsSelected["papier"] = $_GET["papier"]; 
} 
if (isset($_GET["venster"])) { 
$optionsSelected["venster"] = $_GET["venster"]; 
} 
if (isset($_GET["lock"])) { 
    $optionsSelected["lock"] = $_GET["lock"]; 
} 


if (count($optionsSelected) < 6) { 

} 
else { 
    $key = base64_encode(serialize($optionsSelected)); 
    $_SESSION['cart'][] = $key; 
} 

CLEARWINKELWAGEN.PHP:

session_start(); 

session_destroy(); 
+2

歡迎來到SO。你的問題有點含糊。例如,當你在php中提到你的代碼時,你已經添加了javascript和php標籤。此外,你還沒有發佈任何代碼。試圖用相關代碼來表達任何與編碼有關的問題對於讀者來說很難理解你的問題,並且你最後得到任何幫助。最後但並非最不重要的一點,我們應該盡我們所能做的最小努力,就是我們發佈問題的時刻以及我們遇到問題的地方。友善,這是我的兩分錢。 – Christos

+0

你可以使用'array_unique()'https://secure.php.net/manual/function.array-unique.php –

+0

可能重複[PHP的唯一數組的值?](http://stackoverflow.com/questions/6422562/PHP-獨特陣列按值) – osanger

回答

0

使用unset將其刪除。您可以使用array_search獲取與您的搜索條件相匹配的第一個元素的索引。

unset($array[array_search("b",$array)]); 

注:如果你的問題的目的是爲了去除重複,然後@Anant有你答案。

0

斯蒂爾帕特爾的答案已經解決。得到它通過添加此代碼的工作:

$todelete = $_GET["delete"]; 
unset($_SESSION['cart'][array_search($todelete,$_SESSION['cart'])]); 

,而不是這樣的:

$_SESSION['cart'] = array_diff($_SESSION['cart'], array($todelete)); 

謝謝!