不太确定如何提出这个问题,但在这里:
我在旧系统上有三个不同级别的认证(LPCS,LPC,LPCA),我需要添加到新系统中,以便更好地区分各个级别(is_certification)。
我创建了一个数组,可以根据认证级别捕获信息。我可以将它们添加到阵列中,但我的目标是添加他们已完成的最高级别的认证。例如,LPCS高于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);
}
}
}
答案 0 :(得分:2)
您需要分别测试每个子字符串。然后,您可以将它们映射到数字认证级别,以便更轻松地进行测试。请注意,您必须最后检查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;
}