如果['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
答案 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'])) {
谢谢你们!