簡體   English   中英

嘗試比較兩個數組中的值

[英]Attempting to compare values in two arrays

我在網頁上有一個用戶列表,正在嘗試將每個用戶名與數組中的用戶列表進行比較。 但是由於某種原因,以下代碼始終返回false。 某些用戶名確實匹配,因此應在用戶名旁邊顯示是。

foreach($result AS $user){
    foreach($listarray AS $name){
        if($user['username'] == $name){
            $whitelisted = 'Yes';
        } else {
            $whitelisted = 'No';
        }
    }
    echo '<tr><td><p>'.$user['username'].'</p></td><td><p>'.$user['location'].'</p></td><td><p>'.$user['date_joined'].'</p></td><td><p>'.$whitelisted.'</p></td>';
}

為什么即使某些名稱應匹配,此比較也返回false?

找到匹配項時,需要使用break命令退出循環。 現在,您的代碼正在$ result中遍歷每個值,然后將其取值並將其與$ listarray中的每個值進行比較。 它不是並行比較。

如果存在匹配的元素,則需要break內部的foreach循環。 或者,您可以使用in_array函數檢查數組中是否存在值

foreach($result AS $user){
    $whitelisted = 'No';
    if (in_array($user['username'], $listarray ))
    {
       $whitelisted = 'Yes';
    }
    echo '<tr><td><p>'.$user['username'].'</p></td><td><p>'.$user['location'].'</p></td><td><p>'.$user['date_joined'].'</p></td><td><p>'.$whitelisted.'</p></td>';
}

比較結果分配給一個簡單變量,每次都覆蓋它。 這樣,如果最后一個為假,它將始終為假。 此外,第二個foreach將執行所有迭代,然后返回第一個。 可以通過continue;

foreach($result AS $user){
  foreach($listarray AS $name){
    if($user['username'] == $name){
        $whitelisted = 'Yes';
        continue; // that way when conpared as true, your other foreach can display result
    } else {
        $whitelisted = 'No';
    }
}
echo '<tr><td><p>'.$user['username'].'</p></td><td><p>'.$user['location'].'</p></td><td><p>'.$user['date_joined'].'</p></td><td><p>'.$whitelisted.'</p></td>';
}
foreach($result AS $user){
    $whitelisted = 'No';
    foreach($listarray AS $name){
        if($user['username'] == $name){
            $whitelisted = 'Yes';
        }
    }
    echo '<tr><td><p>'.$user['username'].'</p></td><td><p>'.$user['location'].'</p></td><td><p>'.$user['date_joined'].'</p></td><td><p>'.$whitelisted.'</p></td>';
}
$a = array('me', 'you', 'ours');
$b = array('me', 'mine', 'you');

$merge = array_merge($a, $b); // MERGER ARRAY
$dups = array_count_values($merge); // COUNT DUPLICATES

// STORE ALL DUPLICATED VALUES
$dup = array();
foreach($dups as $k => $v) {
    if($v > 1) {
        $dup[] = $k;
    }
}

echo '<pre> Duplicates: '; print_r($dup); echo '</pre>';

結果:

 Duplicates: Array
(
    [0] => me
    [1] => you
)

查看我的PHP小提琴: http : //phpfiddle.org/main/code/t71-4db

暫無
暫無

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

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