2017-02-15 8 views
-3

私は、これらに 'a'、 'b'、 'b'、 'c'の配列を持っています。順序は必ずしも同じではなく、時にはそれにも異なる文字列があります。配列から1つの 'b'を取り除くにはどうすればいいですか?配列から変数を削除する()

明確にするために、array_diff()を使用して$ _SESSION ['cart']から文字列を削除しています。しかし、2つの文字列が同じ場合、両方の文字列が削除されます。 と1つだけを削除するにはどうすればよいですか?

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

ようこそ。あなたの質問は少し曖昧です。たとえば、PHPでコードを記述している間に、javascriptタグとphpタグの両方を追加しました。さらに、あなたはコードを投稿していません。関連するコードを提示することでコーディングに関連する問題を表現しようとすることは、読者があなたの問題を理解するのは非常に困難であり、最後にはどんな助けにもなります。最後に、質問を投稿した瞬間と私たちが問題を抱えていた瞬間の出来事を最小限に抑えることが重要です。フレンドリーな、これは私の2セントです。 – Christos

+0

'array_unique()'を使うことができます。https://secure.php.net/manual/function.array-unique.php –

+0

[値でPHPのユニークな配列を複製できますか?](http://stackoverflow.com/questions)/6422562/php-unique-array-by-value) – osanger

答えて

0

使用unsetそれを削除するには。 array_searchを使用すると、検索条件に一致する最初の要素のインデックスを取得できます。

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

注:あなたの質問の目的は、重複を削除する場合は、その後、@Anantはあなたのための答えを持っています。

0

Synny Patelの回答がうまくいった。それは、このコードを追加することで動作するようになった。これに代えて

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

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

ありがとう!

関連する問題