验证第二个数组中的值是否对应于第一个数组的平方值的函数

时间:2019-03-01 19:21:31

标签: php

如果第二个数组的值是第一个数组的值的平方,我想拥有一个返回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);

2 个答案:

答案 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)

您在这里有两个问题:

  • 首先,您仅检查第一个数组元素,因为如果条件为true或false都退出了函数,则如果$recnameslist = array ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' ); $rand_keys = array_rand($recnameslist, 1); $recname = $recnameslist[$rand_keys] . "\n"; 的当前元素不等于{的平方当前元素,则应返回false {1}},否则继续处理。
  • 第二,您使用in_array()函数,该函数在所有$arrayB数组中查找,因此,如果$arrayA中的所有元素在$arrayB中具有平方值,则函数将返回true顺序和出现次数的问题。您应该检查$arrayA$arrayB元素。