如果找不到数组,则阻止输出数据

时间:2015-04-27 11:09:53

标签: php

如果['extensions']数组存在,我有这段代码可以正常运行..但如果数组不存在则会返回错误。如果扩展数组不存在,如何修复此代码不返回任何内容?

- [UPDATE -

很抱歉我之前插入了错误的代码..这是我需要检查的正确代码。

        $oid = array('id-ce-subjectAltName');
        $count = count($cert['tbsCertificate']);
        for($i = 0; $i < $count; $i++) {
             if(array_key_exists('extensions', $cert['tbsCertificate']) &&
                in_array($cert['tbsCertificate']['extensions'][$i]['extnId'], $oid)) {
                $value = $cert['tbsCertificate']['extensions'][$i]['extnId'];
                echo "\n",'<b>[SANs]</b>',"\n","\n";
            }
        }

['extensions']不存在时,我收到此警告 - 我想阻止生成任何警告。

  

注意:未定义的索引:扩展名   第142行的C:\ xampp \ htdocs \ labs \ certdecode \ certdecode.php

2 个答案:

答案 0 :(得分:0)

更新后:

数组的结构如何?

您计算$ cert ['tbsCertificate']中的项目数, 但是在你的循环中,你的$ i代表$ cert ['tbsCertificate'] ['extensions']中的项目数。

所以也许你尝试做这样的事情?:

    $oid = array('id-ce-subjectAltName');
    if (array_key_exists('extensions', $cert['tbsCertificate']) &&
        is_array($cert['tbsCertificate']['extensions'])
    ) {
        $count = count($cert['tbsCertificate']['extensions']);
        for ($i = 0; $i < $count; $i++) {
            if (in_array($cert['tbsCertificate']['extensions'][$i]['extnId'], $oid)) {
                    $value = $cert['tbsCertificate']['extensions'][$i]['extnId'];
                    echo "\n", '<b>[SANs]</b>', "\n", "\n";
            }
        }
    }

答案 1 :(得分:0)

好吧,似乎可以通过在代码的开头添加一个isset()来实现:

if(isset($cert['tbsCertificate']['extensions'])) {

谢谢你们!