Php 检查数组中是否存在某些值,如果不存在,则检查下一个值,并确保前一个值不会出现

Php 检查数组中是否存在某些值,如果不存在,则检查下一个值,并确保前一个值不会出现,php,Php,好的,我有一个名为$arraymaster的数组,它基本上是一个教育代码数组(从最高到最低): 现在有第二个数组列出了我从数据库中获得的个人资格: $arrayedu=explode(',', $edudetail); $arrayedu的一些例子是(一个人可以有多种资格): 研究生,HSC通过,研究生,专业,专业 专业,SSC通过 研究生、专业人员、技术人员 等等。 现在,我必须确定一个人的最高资格(基于$arraymaster)>>然后在此基础上从$arrayedu执行一些操作。目前我

好的,我有一个名为$arraymaster的数组,它基本上是一个教育代码数组(从最高到最低):

现在有第二个数组列出了我从数据库中获得的个人资格:

$arrayedu=explode(',', $edudetail);
$arrayedu的一些例子是(一个人可以有多种资格):

  • 研究生,HSC通过,研究生,专业,专业
  • 专业,SSC通过
  • 研究生、专业人员、技术人员
等等。 现在,我必须确定一个人的最高资格(基于$arraymaster)>>然后在此基础上从$arrayedu执行一些操作。目前我正在做这件事,因此:

 if(in_array("P H D", $arrayedu){
  $educode=1;
 }
 elseif(in_array("Post Graduate", $arrayedu) && !in_array("P H D",$arrayedu)){
 $educode=2;
}
 elseif(in_array("Professional", $arrayedu) && !in_array("P H D", $arrayedu) 
&& !in_array("Post Graduate", $arrayedu)){
 $educode=3;
}
elseif(in_array("Graduate", $arrayedu) && !in_array("Professional", 
$arrayedu) && !in_array("P H D", $arrayedu) && !in_array("Post Graduate", 
$arrayedu)){
$educode=4;
}

等等。所以我基本上是想从$arrayedu那里获得最高的资格,有没有更简单的方法

使用
array\u intersect
current
功能的解决方案:

$arrayedumaster = [
    "P H D", "Post Graduate", "Professional", "Graduate", "Technical", "ITI", "Under Graduate",
    "H S C Passed", "S S C Passed", "Upto Ninth", "Upto Fifth", "No Schooling"
];
$arrayedu = ["Graduate", "HSC Passed", "Graduate", "Professional", "Professional"];

$highest_edu = current(array_intersect($arrayedumaster, $arrayedu));
print_r($highest_edu);
输出:

Professional

RomanPerekhrest已经提供了完美的一行答案,但这种方法可能会有所启发:

$arrayedumaster = [
  "P H D", "Post Graduate", "Professional", "Graduate", "Technical", "ITI",
  "Under Graduate", "H S C Passed", "S S C Passed", "Upto Ninth",
  "Upto Fifth", "No Schooling"
];
$arrayedu = [
  "Graduate", "HSC Passed", "Graduate", "Professional", "Professional"
];

$highestedu = count($arrayedumaster);
foreach ( $arrayedu as $value ) {
  if ( ($key = array_search($value, $arrayedumaster)) !== false ) {
    $highestedu = min($key, $highestedu);
  }
}

print_r($arrayedumaster[$highestedu]);
请尝试以下排序:

$data = array(
    "Graduate", "H S C Passed", "Graduate", "Professional", "Professional"
);

$sortingArr = array("P H D", "Post Graduate", "Professional", "Graduate", "Technical", "ITI", "Under Graduate", "H S C Passed", "S S C Passed", "Upto Ninth", "Upto Fifth", "No Schooling", "ddd");

$result = array(); // result array
foreach($sortingArr as $val){ // loop
    $key = array_search($val, $data);
    if(in_array($val, $data)) {
        $result[$key] = $val; // adding values
    }

}
print_r($result); // print results

就是这样!谢谢。
$data = array(
    "Graduate", "H S C Passed", "Graduate", "Professional", "Professional"
);

$sortingArr = array("P H D", "Post Graduate", "Professional", "Graduate", "Technical", "ITI", "Under Graduate", "H S C Passed", "S S C Passed", "Upto Ninth", "Upto Fifth", "No Schooling", "ddd");

$result = array(); // result array
foreach($sortingArr as $val){ // loop
    $key = array_search($val, $data);
    if(in_array($val, $data)) {
        $result[$key] = $val; // adding values
    }

}
print_r($result); // print results