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