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)是第一个提交的。非常感谢你的帮助!