如果第二个数组的值是第一个数组的值的平方,我想拥有一个返回true的函数。像这样不起作用,因为它始终返回true。您知道问题出在哪里吗?
function verify($arrayA, $arrayB){
for($a=0; $a <= count($arrayA); $a++){
if(in_array(pow($arrayA[$a], 2), $arrayB)){
echo "y";
return true;
}
else{
echo "n";
return false;
}
}
}
$arrayA = [1, 2, 2];
$arrayB = [1,7,8];
$result = verify($arrayA, $arrayB);
print_r($result);
答案 0 :(得分:1)
您总是在第一次迭代中退出循环。
如果正方形在另一个数组中,则不应退出循环,而应继续检查下一个。只有当循环可以进行所有迭代(不返回false)时,您才能得出结论:
function verify($arrayA, $arrayB){
for($a=0; $a <= count($arrayA); $a++){
if(!in_array(pow($arrayA[$a], 2), $arrayB)){
echo "n";
return false;
}
}
echo "y";
return true;
}
答案 1 :(得分:0)
您在这里有两个问题:
$recnameslist = array ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' );
$rand_keys = array_rand($recnameslist, 1);
$recname = $recnameslist[$rand_keys] . "\n";
的当前元素不等于{的平方当前元素,则应返回false {1}},否则继续处理。$arrayB
数组中查找,因此,如果$arrayA
中的所有元素在$arrayB
中具有平方值,则函数将返回true顺序和出现次数的问题。您应该检查$arrayA
和$arrayB
元素。