浏览数组元素并相互比较

时间:2017-07-12 11:23:29

标签: php arrays

我在php中有一个数组,我想做的是检查数组中是否有某些值(可以使用 in_array 轻松完成没问题)并检查某些值是否不存在在数组中。

以下是我尝试做的一个例子。如果 $ array 有1,2,11,41而不是13,21,12,22,14

我试图返回一些东西

它应该说"并非所有有效" 而是我得到"所有有效"

以下是片段: snippet

我做错了什么?

4 个答案:

答案 0 :(得分:5)

对于动态

,您可以这样做
$array = array("1","2","11","13","21","12","22","14", "41");
$required = array("1","2","11","41");
$disallowed = array("13","21","12","22","14");
$flag='All valid';
foreach ($array as $num){
    if(in_array($num,$required )&&!in_array($num,$disallowed )){
        $flag='Not all valid';
    }
}
echo  $flag;

答案 1 :(得分:3)

<?php
        //Enter your code here, enjoy!

$array = array("1","2","11","13","21","12","22","14", "41");


if (
        ((in_array('1', $array))
        || (in_array('2', $array)) 
        || (in_array('11', $array)) 
        || (in_array('41', $array))) 
        && ((!in_array('13', $array))
        && (!in_array('21', $array))
        && (!in_array('12', $array))
        && (!in_array('22', $array))
        && (!in_array('14', $array)))
    ) {
        echo "All valid";
    } else {
        echo "Not all valid";
    }

您需要关注if条件下的括号。你需要(1,2,11,41)数组,但(13,21,12,22,14)不在数组中,所以你的主要条件将在&&连接的主括号中。然后将子条件的括号添加到这些括号中。

您使用||作为第一组 - 您是否认为任何该值都有效?如果您需要所有必须的第一组数组,那么您必须将||更改为&&

答案 2 :(得分:2)

提供的回显结果实际上是正确的 - 您正在检查数组中是否存在项目 - 因为您正在使用|| ('或'运算符)第一个正实例将返回“所有有效”结果,其余选项将永远不会被检查。实际上 - 你说的是数组中的“1”是否为“全部有效”。您需要重构代码以确保检查所有元素。

<%
    String cntr_no = request.getParameter("cntr_no");
    String cntr_rev = request.getParameter("cntr_rev");
    String vd_cd = request.getParameter("vd_cd");
    String random_value = request.getParameter("random_value");
%>

then value is 
cntr_no  = CTR170700199
cntr_rev = 1
vd_cd  = VA100040
random_value = $qZ3xIIt1YnfBcf!I@

答案 3 :(得分:1)

你可以为你的需求创建一个可重用的函数,它接受三个参数你的主数组($ mainArray),你需要的有效元素数组($ reqArray)和受限制的无效元素数组($ restrictArray)。然后将状态从此函数返回到主调用函数。像这样

public function getStatus($mainArray,$reqArray,$restrictArray){
    $status = true;
    foreach ($array as $num){
        if(in_array($num,$reqArray) && !in_array($num,$restrictArray)){
            $status = false;
            break;
        }
    }
   return $status;
}

在你的main函数中你可以像这样调用这个可重用的函数

public function mainFunction(){
    $array = array("1","2","11","13","21","12","22","14", "41");
    $required = array("1","2","11","41");
    $disallowed = array("13","21","12","22","14");
    if(getStatus($array,$required,$disallowed){
        echo "All Valid";
    }else{
        echo "Some Inputs Are Invalid";
    }
}