如何在php中的多个重复项中只从数组中删除一个元素

时间:2017-08-23 14:07:03

标签: php arrays

我正在编写用于在php中添加和删除数组的代码。阵列根据我的要求成功推进。现在我想删除数组元素。但这是条件。我在这个数组中有重复的值。所以我只想删除重复值中的一个元素而不是全部

这是代码

<?php
session_start();
$id = $_POST['value'];

$_SESSION['id'] = $id ;

if(!isset($_SESSION['cart']))
{
$_SESSION['cart'] = array();
}
array_push($_SESSION['cart'], $id);


echo true;



?>

这是我得到的数组

Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 0 [4] => 1 [5] => 1 [6] => 6 [7] => 0 [8] => 0 [9] => 2 [10] => 0 [11] => 0 [12] => 5 [13] => 1 [14] => 1 ) 

例如。我在这个数组中有多个0元素。所以我想只删除一个元素而不是全部。

由于

5 个答案:

答案 0 :(得分:1)

试试这个:

$newarray = array();
$alreadydeleted = array();
foreach ($oldarray AS $key => $value)
{
    if (!in_array($value, $newarray) || in_array($value, $alreadydeleted))
        $newarray[$key] = $value;
    else
        $alreadydeleted[$key] = $value;
}

你应该让你的新阵列删除一个重复的

答案 1 :(得分:1)

您不应该像现在这样继续,而是需要时间重新格式化。你是一个购物车,这可以更轻松,更有前途。当这个项目的规模和复杂性增加时,会回来困扰你(建造5个[小]商店告诉我这个。)

不是添加(产品的ID),而是添加密钥,它是产品的ID,包含有关它的信息数组,例如数量。

$_SESSION['cart'] = array();

// to add a product:
$_SESSION['cart'][ $product_id ] = array('quantity'=>5);

// To remove from your array:
unset($_SESSION['cart'][ $product_id ]);

// To change the amount
$_SESSION['cart'][ $product_id ]['quantity'] = $newValue;
// Or, alternatively:
$_SESSION['cart'][ $product_id ]['quantity'] += 1; // add one.

答案 2 :(得分:0)

<?php
session_start();
$id = $_POST['value'];

$_SESSION['id'] = $id ;

if(!isset($_SESSION['cart']))
{
$_SESSION['cart'] = array();
}

//You can try this
if(!array_search($id,$_SESSION['cart'],TRUE))
{
    array_push($_SESSION['cart'], $id);
}

//OR can do this after array_push
$new_unique_array = array_unique($_SESSION['cart']);


echo true;



?>

答案 3 :(得分:0)

if (($key = array_search(0, $array)) !== false) {
    unset($array[$key]);
}

因此,首先出现的值0将被删除。试试这个

答案 4 :(得分:0)

要从$_SESSION['cart']中删除ID的一个实例,您可以使用array_search查找该数组中的已发布值,并在找到该密钥后返回其密钥。

$key = array_search($_POST['value'], $_SESSION['cart']);

array_search将返回第一个匹配键,(因此只有一个项目的键)。

如果找到某个密钥,请取消设置该密钥,并且只删除其中一个相应的值。

if ($key !== false) unset($_SESSION['cart'][$key]);