不太确定如何问这个问题,但它来了:
我在一个旧系统上有三个不同级别的认证(LPCS、LPC、LPCA),我需要将其添加到一个新系统中,以更好地区分不同级别(is_certification)。
我创建了一个阵列,它将根据认证级别捕获信息。我可以将它们添加到阵列中,但我的目标是添加它们已完成的最高级别的认证。例如,LPCS比LPC高,LPC比LPCA高。如果他们已经完成了所有课程,我只希望LPCS添加到数组中,或者如果他们只完成了LPC,我不希望LPCA显示在数组中。
非常感谢您的建议和帮助!
这是代码:
$oldsystem_certs = array();
foreach ($old_expired_cert as $cert){
if ((strpos($cert->product, 'LPCS') == True) || (strpos($cert->product, 'LPC') == True) || (strpos($cert->product, 'LPCA') == True) && $cert->is_certification==0){
$at = strtotime(certification_end($cert));
$bt = strtotime(date("2015-04-15"));
if($at >= $bt){
}else{
array_push($oldsystem_certs, $cert);
}
}
}
您需要分别测试每个子字符串。然后,您可以将它们映射到数字认证级别,以使最高级别的测试更容易。请注意,您必须最后检查LPC
,因为它是其他证书名称的子字符串。
$cert_levels = array('LPCS' => 3, 'LPCA' => 1, 'LPC' => 2);
$highest_cert_level = 0;
$highest_cert = null;
$at = null;
foreach ($old_expired_cert as $cert) {
$prod = $cert->product;
$cert_level = 0;
foreach ($cert_levels as $certname => $level) {
if (strpos($prod, $certname) !== false)) {
if ($level > $highest_cert_level) {
$highest_cert_level = $level;
$highest_cert = $cert;
$at = strtotime(certification_end($cert));
}
break;
}
}
}
$bt = strtotime(date("2015-04-15"));
if ($highest_cert && $at < $bt) {
$oldsystem_array[] = $highest_cert;
}
演示