【问题标题】:Own implementation of array_unique() [duplicate]array_unique() 自己的实现 [重复]
【发布时间】:2016-08-03 12:46:27
【问题描述】:

我有这个数组:

$number = array("a", "b", "b", "c", "a", "b", "c", "b", "c");

现在我想获取所有唯一值。表示结果应该是:

$result = array("a", "b", "c");

现在我知道这可以通过array_unique() 轻松解决。但我想编写自己的 array_unique() 小实现,只使用 for 循环 unset()array_values()

【问题讨论】:

  • 只需使用array_unique()。我不知道你怎么能花三个小时在这上面,而快速的谷歌搜索会在几分钟内解决这个问题。
  • 为什么不使用array_unique()
  • 您必须使用这些功能还是可以使用其他功能?
  • 它可以很容易地解决。我知道。但我想使用 for()、unset() 和 array_values()。如果你有这个逻辑。让我知道。
  • 你为什么要让你的代码变得复杂!

标签: php arrays


【解决方案1】:

可能是这样的?在这里,我们循环遍历数组,一个从位置 0 开始的 for 和另一个从 1 开始。我们将 $i 位置与数组中的所有其他位置进行比较,如果找到两个相同的位置,则删除第二个位置。

<?php
    $number = array("a", "b", "b", "c", "a", "b", "c", "b", "c");
    $count = count($number);

    for($i = 0; $i < $count; $i++) {
        for($j = $i+1; $j < $count; $j++) {
            if(isset($number[$j]) && isset($number[$i]) && $number[$i] == $number[$j]) {
                unset($number[$j]);
            }
        }
    }

    print_r($number);

【讨论】:

  • 就这样。现在我试图理解它。谢谢。
  • 我添加了解决方案的小描述
  • 你需要多少分钟来解决这个问题?
  • 几分钟,因为我在想你为什么需要array_values。我有这个逻辑是因为我使用的 C 没有像 array_uniquearray_search 等很酷的函数
【解决方案2】:

使用 array_unique()

<?php
    $number=array("a","b","b","c","a","b","c","b","c");
    $unique_array=array_unique($number);
    print_r($unique_array);
?>

//第二种可能性

<?php
    $number=array("a","b","b","c","a","b","c","b","c");
    $unique_array=[];
    foreach($number as $val)
    {
        $unique_array[$val]=$val;
    }
    print_r(array_values($unique_array));
?>

//for,unset,array_value的第三种可能性

<?php
$number=array("a","b","b","c","a","b","c","b","c");
$count=count($number);
for($i=0;$i<$count;$i++)
{
    if($i<count($number))
    {
        for($j=$i+1;$j<$count;$j++)
        {
            if($number[$i]==$number[$j])
            {
                unset($number[$j]);
             }
        }

    }
}
$number=array_values($number);
print_r($number);

?>

预期结果是

Array ( [0] => a [1] => b [2] => c ) 

【讨论】:

  • 你必须使用 array_unique 吗?你能告诉我如何使用 for()、unset() 和 array_values() 消除这些重复项吗?
  • 请给我几分钟,我会的
  • 在此代码中,必须比较 $number[0]==$number[0] 等相同的数组。你能避免吗?
  • 现在检查,我已经更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 2016-05-19
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
相关资源
最近更新 更多