我有一个包含10个数字的数组,我已经设置了一个简单的循环来检查当前值是否在数组中。所有都应匹配,因为它与来自的数组进行比较,但第一个值永远不匹配?
<?php
$i=0;
$numskills = sizeof($all_barristers_faves);
$all_skills_added = "Yes";
while ($i < $numskills) {
// CHECK FOR SKILL IN FAVES
if(in_array($all_barristers_faves[$i], $allfavourites)) {
echo $all_barristers_faves[$i]." Yes<br/>";
} else {
echo $all_barristers_faves[$i]." No<br/>";
$all_skills_added = "No";
}
$i++;
}
这输出: 18号 19是的 20是的 21是的 22是的 23是的 24是的 25是的 26是的 27是的 在FAVES的所有技能?没有
我已尝试过各种不同的数字,并且它始终是第一个不匹配的数字 - 如果有人知道原因,我会大量欣赏它。 ; - )
答案 0 :(得分:0)
当我像这样运行你的代码时,它会返回正确的值。
$all_barristers_faves = array(10,12,13,14);
$allfavourites = array(10,12,13,14);
$i=0;
$numskills = sizeof($all_barristers_faves);
$all_skills_added = "Yes";
while ($i < $numskills) {
// CHECK FOR SKILL IN FAVES
if(in_array($all_barristers_faves[$i], $allfavourites)) {
echo $all_barristers_faves[$i]." Yes<br/>";
} else {
echo $all_barristers_faves[$i]." No<br/>";
$all_skills_added = "No";
}
$i++;
}
我建议您将in_array($all_barristers_faves[$i], $allfavourites)
转为in_array($all_barristers_faves[$i], $allfavourites, false);
。
也许18在一个阵列中被视为不同的类型。通过将第三个参数设置为false,它不会检查相同的类型。
答案 1 :(得分:-1)
看看你的代码似乎:
这可以使用array_diff函数使用一行代码来完成,该函数返回第一个数组中第二个数组中不存在的所有项。
$all_skills_added = (count(array_diff($all_barristers_faves, $allfavourites)) === 0);
对array_diff的调用会为$ all_barristers_faves中的所有项目提供$ allfavourites中不会出现的项目。当这些项目的数量为0时,您可以确定所有“技能”都在“收藏”中。