簡體   English   中英

如何在沒有數組函數的情況下從 arrays 獲得 output 唯一值?

[英]How to output unique values from arrays without array functions?

我需要來自兩個 arrays 的 output 唯一值,但我不能僅使用 foreach 和 if 語句的任何數組函數。 結果應該返回一個具有唯一值的數組並轉換為字符串。

我試圖等於兩個值,但 output 不是我例外。

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

問題是您正在將每個項目與下一個數組中的每個項目進行比較,並為每個不匹配的項目添加第一個數組中的值。

該解決方案利用了數組的所有鍵都是唯一的這一事實,因此首先它遍歷所有 arrays 並將它們添加到累積數組( $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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM