【问题标题】:How to output unique values from arrays without array functions?如何从没有数组函数的数组中输出唯一值?
【发布时间】:2019-10-31 17:53:06
【问题描述】:

我需要从两个数组中输出唯一值,但我不能只使用 foreach 和 if 语句的任何数组函数。结果应该返回一个具有唯一值的数组并转换为字符串。

我试图使两个值相等,但输出不是我例外。

function uniqueNames(array $array1, array $array2){
    $output = [];
    foreach($array1 as $name1) {
        foreach($array2 as $name2) {
            if ($name1 !== $name2){
                $output[] = $name1." ";
            } 
        }
    }
    return implode(",", $output);
}

print_r(uniqueNames(['July', 'Ringold'], ['Harison', 'July', 'Antony']));```

My expected results are July, Ringold, Harison, Antony
But I get July ,July ,Ringold ,Ringold ,Ringold

【问题讨论】:

    标签: php arrays if-statement foreach


    【解决方案1】:

    问题是您将每个项目与下一个数组中的每个项目进行比较,并为每个不匹配的项目添加第一个数组中的值。

    这个解决方案利用了数组的所有键都是唯一的这一事实,因此首先它遍历所有数组并将它们添加到累积数组 ($unique) 中,然后循环遍历并获取所有键值作为唯一值列表 ($output)...

    function uniqueNames(array $array1, array $array2){
        $unique = [];
        $output = [];
        foreach([$array1, $array2] as $sub) {
            foreach($sub as $name2) {
                $unique[$name2] = null;
            }
        }
        foreach ( $unique as $key => $value )   {
            $output[] = $key;
        }
        return implode(",", $output);
    }
    

    或者使用if,您需要做的是遍历一个数组,然后检查另一个数组中的所有元素。只有当你找不到它时,你才能说它需要添加。这只是使用一个标志,该标志在找到该项目时会更改....

    function uniqueNames(array $array1, array $array2){
        $output = $array1;
        foreach($array2 as $name2) {
            $found = false;
            foreach($array1 as $name1) {
                if ($name1 == $name2){
                    $found = true;
                    break;
                }
            }
            if (!$found)   {
                $output[] = $name2;
            }
        }
        return implode(",", $output);
    }
    

    【讨论】:

    • 谢谢!仅使用 foreach 我了解如何解决问题,但是如何使用“IF”语句比较这两个数组并仅返回唯一值来获得相同的结果?
    • 非常感谢!但是当发现重复时“$found = true”?而这个“标志”就像是值的复选框(作为重复项?)然后添加来自 $name2 的值被检查为假(作为重复项)?
    • 不确定你在说什么。 $found 仅在找到值时设置为 true。然后if (!$found) 说 - 如果找不到该值,则将其添加到值列表中。
    • 好的,非常感谢!你帮了我很多!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多