Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP基于上一个元素删除重复的数组_Php_Arrays - Fatal编程技术网

PHP基于上一个元素删除重复的数组

PHP基于上一个元素删除重复的数组,php,arrays,Php,Arrays,我希望创建一个函数来检查数组中的重复元素,并且仅当重复元素与前一个元素相同时才删除这些元素。让我举一个简单的例子: 以下数组(在这种情况下,数组将不是多维的)如下所示: array('apple', 'apple', 'pear', 'orange', 'banana', 'apple', 'banana'); 在这种情况下,remove duplicate array函数将返回包含以下元素的数组: array('apple', 'pear', 'orange', 'banana', 'app

我希望创建一个函数来检查数组中的重复元素,并且仅当重复元素与前一个元素相同时才删除这些元素。让我举一个简单的例子:

以下数组(在这种情况下,数组将不是多维的)如下所示:

array('apple', 'apple', 'pear', 'orange', 'banana', 'apple', 'banana');
在这种情况下,remove duplicate array函数将返回包含以下元素的数组:

array('apple', 'pear', 'orange', 'banana', 'apple', 'banana');

请注意,数组中仍然存在“重复项”。在本例中,第一个和第二个元素是重复的(都是“苹果”),一个在另一个之前。也就是说,在第一个数组中发现了三个“apple”,但只有一个(在本例中是第二个元素)被删除,因为它是数组中前一个元素的副本。按照这些规则,虽然“banana”有重复项,但由于它不是前一个数组元素的重复项,因此不会删除它。关于这方面的好函数有什么想法吗?

类似这样的想法可能是:

function remove_adjacent_dups($arr) {
  $prev = null;
  $result = array();
  foreach( $arr as $val ) {
    if( $val !== $prev ) array_push($result, $val);
    $prev = $val;
  }
  return $result;
}

也许是这样的:

function remove_adjacent_dups($arr) {
  $prev = null;
  $result = array();
  foreach( $arr as $val ) {
    if( $val !== $prev ) array_push($result, $val);
    $prev = $val;
  }
  return $result;
}

一个版本,取决于你想用钥匙做什么

$array = array('apple', 'apple', 'apple', 'apple', 'pear', 'orange', 'banana', 'apple', 'banana');
for ($i = 0; $i < count($array); $i++) {
    if ($array[$i] == $array[$i+1]) {
        unset($array[$i]);
    }
}
print_r($array);
//Array ( [3] => apple [4] => pear [5] => orange [6] => banana [7] => apple [8] => banana ) 
$array=array('apple','apple','apple','apple','apple','pear','orange','banana','apple','banana');
对于($i=0;$i苹果[4]=>梨[5]=>橙[6]=>香蕉[7]=>苹果[8]=>香蕉)

此功能的版本,具体取决于您想对按键执行的操作

$array = array('apple', 'apple', 'apple', 'apple', 'pear', 'orange', 'banana', 'apple', 'banana');
for ($i = 0; $i < count($array); $i++) {
    if ($array[$i] == $array[$i+1]) {
        unset($array[$i]);
    }
}
print_r($array);
//Array ( [3] => apple [4] => pear [5] => orange [6] => banana [7] => apple [8] => banana ) 
$array=array('apple','apple','apple','apple','apple','pear','orange','banana','apple','banana');
对于($i=0;$i苹果[4]=>梨[5]=>橙[6]=>香蕉[7]=>苹果[8]=>香蕉)
您可以尝试以下方法:

function removeDuplicates($dupeArray)
{
    $prevElement = NULL;

    foreach($dupeArray as $index => $element)
    {
        if ($prevElement && $prevElement == $element)
        {
            array_splice($dupeArray, $index, 1);
        }
        $prevElement = $element;
    }

    return $dupeArray;
}

$dupeArray = array('apple', 'apple', 'pear', 'orange', 'banana', 'apple', 'banana');
$newArray = removeDuplicates($dupeArray);

var_dump($newArray);
你可以试试这个:

function removeDuplicates($dupeArray)
{
    $prevElement = NULL;

    foreach($dupeArray as $index => $element)
    {
        if ($prevElement && $prevElement == $element)
        {
            array_splice($dupeArray, $index, 1);
        }
        $prevElement = $element;
    }

    return $dupeArray;
}

$dupeArray = array('apple', 'apple', 'pear', 'orange', 'banana', 'apple', 'banana');
$newArray = removeDuplicates($dupeArray);

var_dump($newArray);

使用以下代码PHP提供函数数组_unique以删除重复项

$arraywithdups = array('apple', 'apple', 'pear', 'orange', 'banana', 'apple', 'banana');
$arraywithoutdups = array_unique($arraywithdups);

使用以下代码PHP提供函数数组以删除重复项

$arraywithdups = array('apple', 'apple', 'pear', 'orange', 'banana', 'apple', 'banana');
$arraywithoutdups = array_unique($arraywithdups);

这也行得通,与我接受的方式有点不同(这意味着我学到了新东西!)。我接受了另一个答案,因为1)它做了我需要的,2)是第一个提交的。非常感谢你的帮助!这也行得通,和我接受的方式有点不同(这意味着我学到了一些新东西!)。我接受了另一个答案,因为1)它做了我需要的,2)是第一个提交的。非常感谢你的帮助!