php - 仅将最高级别的认证添加到阵列中

标签 php arrays

不太确定如何问这个问题,但这里是:

我在旧系统上拥有三个不同级别的认证(LPCS、LPC、LPCA),我需要将其添加到新系统中,以更好地区分各个级别 (is_certification)。

我创建了一个数组,它将根据认证级别捕获信息。我可以将它们添加到阵列中,但我的目标是添加他们已完成的最高级别的认证。例如,LPCS高于LPC,LPC又高于LPCA。如果他们已经完成了所有类(class),我只想将 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;
}

DEMO

关于php - 仅将最高级别的认证添加到阵列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29496877/

相关文章:

php - JQUERY AJAX 使用 PHP 循环加载内容

javascript - 于深水中。在php打印行中添加带有js的div

php - 使用 .htaccess 重写 URL 以缩短链接

php - 为什么在最简单的循环和 3 个元素的数组中没有足够的内存?

php - 获取数组中的订单数据以在 Woocommerce 中对其进行 JSON 编码

c++ - 从 cql::cql_byte_t* {aka unsigned char*} 到 const char* 的无效转换

c - 如何使用 C 中的结构和选择排序按字符串对文件进行排序

php - 支持资源、方法和格式的 RESTful PHP 框架

php - 通知: Undefined index error in php

java - 初始化 JComboBox[] 数组