如何检查两个不同数组中的字符串是否匹配

how to check if string in two different arrays match

我想检查两个不同数组中的字符串 $value 是否匹配。如果它们匹配,就做点什么。如果他们不匹配,就做点什么。

这是单独获取字符串值的代码,但我希望尽可能将它们组合在一起,然后比较字符串以进行匹配。

这是第一次查找

        $count = count($cert['tbsCertificate']['subject']['rdnSequence']);
        $exists = array('utf8String', 'printableString', 'teletexString', 'bmpString', 'universalString', 'ia5String');
        $oid = array('id-at-commonName');
        for($i = 0; $i < $count; $i++) {
            foreach($exists as $field) {
                if(
                    array_key_exists($field, $cert['tbsCertificate']['subject']['rdnSequence'][$i][0]['value']) &&
                    in_array($cert['tbsCertificate']['subject']['rdnSequence'][$i][0]['type'], $oid)
                ) {
                    $value = $cert['tbsCertificate']['subject']['rdnSequence'][$i][0]['value'][$field];
                    echo $value;
                    break; // stop further looping
                }
            }
        }

这是第二次查找:

        $count = count($cert['tbsCertificate']['issuer']['rdnSequence']);
        $exists = array('utf8String', 'printableString', 'teletexString', 'bmpString', 'universalString', 'ia5String');
        $oid = array('id-at-commonName');
        for($i = 0; $i < $count; $i++) {
            foreach($exists as $field) {
                if(
                    array_key_exists($field, $cert['tbsCertificate']['issuer']['rdnSequence'][$i][0]['value']) &&
                    in_array($cert['tbsCertificate']['issuer']['rdnSequence'][$i][0]['type'], $oid)
                ) {
                    $value = $cert['tbsCertificate']['issuer']['rdnSequence'][$i][0]['value'][$field];
                    echo $value;
                    break; // stop further looping
                }
            }
        }

将您的查找代码放在一个将类型作为参数的函数中,returns 将找到的值作为参数。然后比较两个调用。

function lookup($cert, $type) {
    $count = count($cert['tbsCertificate'][$type]['rdnSequence']);
    $exists = array('utf8String', 'printableString', 'teletexString', 'bmpString', 'universalString', 'ia5String');
    $oid = array('id-at-commonName');
    for($i = 0; $i < $count; $i++) {
        foreach($exists as $field) {
            if(
                array_key_exists($field, $cert['tbsCertificate'][$type]['rdnSequence'][$i][0]['value']) &&
                in_array($cert['tbsCertificate'][$type]['rdnSequence'][$i][0]['type'], $oid)
            ) {
                $value = $cert['tbsCertificate'][$type]['rdnSequence'][$i][0]['value'][$field];
                return $value;
            }
        }
    }
    return null;
}

if (lookup($cert, 'subject') == lookup($cert, 'issuer')) {
    // do something
}