我在php中有一个数组,我想做的是检查数组中是否有某些值(可以使用 in_array 轻松完成没问题)并检查某些值是否不存在在数组中。
以下是我尝试做的一个例子。如果 $ array 有1,2,11,41而不是13,21,12,22,14
我试图返回一些东西它应该说"并非所有有效" 而是我得到"所有有效"
以下是片段: snippet
我做错了什么?
答案 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";
}
}