[英]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.