循环时仅将唯一值推送到数组中

新手上路,请多包涵

我正在使用以下循环将项目添加到数组中。我想知道如果值已经在数组中,是否可以不将 $value 添加到 $liste 数组中?

 $liste = array();
foreach($something as $value){
     array_push($liste, $value);
}

原文由 Marc 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 493
2 个回答

在推送之前,您使用 in_array 检查它是否存在。

 foreach($something as $value){
    if(!in_array($value, $liste, true)){
        array_push($liste, $value);
    }
}

,true 启用“严格检查”。这使用 === 而不是 == 比较元素。

原文由 gen_Eric 发布,翻译遵循 CC BY-SA 3.0 许可协议

我有另一个解决方案给你!您可以将键用作值并且 键永远不会重复

 $arr = ["A" => true, "B" => true, "C" => true];

$item = "A";
$arr[$item] = true;

用法:

 foreach($arr as $value => $helper){
    echo $value;
}

设置类

好,我给你写一堂课!不允许重复项的数组称为集合。

 class Set{
    private $countainer;

    public function get(){
        return $this->container;
    }
    public function push($item){
        $this->container[$item] = true;
    }
    public function delete($item){
        unset($this->container[$item]);
    }
}

注意:这不适用于关联数组和值。

原文由 Amir Fo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题