У меня есть массив, созданный из цикла, который возвращает правильные данные
$ku = array();
$oid = array('id-ce-keyUsage');
if(isset($chain['tbsCertificate']['extensions'])) {
$count = count($chain['tbsCertificate']['extensions']);
for($i = 0; $i < $count; $i++) {
$count2 = count($chain['tbsCertificate']['extensions'][$i]['extnValue']);
for($j = 0; $j < $count2; $j++) {
if(array_key_exists('extnId', $chain['tbsCertificate']['extensions'][$i]) &&
in_array($chain['tbsCertificate']['extensions'][$i]['extnId'], $oid)) {
$value = $chain['tbsCertificate']['extensions'][$i]['extnValue'][$j];
$ku[] = $value;
}
}
}
}
print_r($ku);
Вышеприведенный код производит это, что является правильным.
Array
(
[0] => keyEncipherment
[1] => digitalSignature
)
Array
(
[0] => cRLSign
[1] => keyCertSign
)
Array
(
[0] => cRLSign
[1] => keyCertSign
)
Тем не менее, я хотел бы иметь возможность печатать значения $ku
самостоятельно, например:
keyEncipherment, digitalSignature
cRLSign, keyCertSign
cRLSign, keyCertSign
Я попробовал следующий код, но результаты, и хотя результаты выглядят точными, он фактически добавляет результаты каждой итерации вместе, а не сохраняет их отдельно.
Вот код, который я пытаюсь сделать:
foreach ($ku as $val) {
$temp[] = "$val";
$key_usage = implode(', ', $temp);
}
echo $key_usage;
и вот результат:
keyEncipherment, digitalSignature
keyEncipherment, digitalSignature, cRLSign, keyCertSign
keyEncipherment, digitalSignature, cRLSign, keyCertSign, cRLSign, keyCertSign
Поблагодарили бы за помощь. Приятно делиться дополнительным кодом, если необходимо.
-ОБНОВИТЬ-
Этот код, похоже, помогает, но надеется найти лучшее решение, где я могу просто эхо-строку без []
$len=count($ku);
for ($i=0;$i<$len;$i++)
echo $ku[$i].', ';
Вам не нужно хранить значение в другом массиве, так как ваше значение представляет собой массив.
После обсуждения в чате:
$new_ku = implode(',',$ku);
echo $new_ku;
попробуйте этот код,
array_walk($ku, create_function('$k, $v', 'echo $v[0].", ".$v[1];'));
Если у вас есть версия PHP> = 5.3, вы можете использовать..
array_walk($ku, function($i, $v){ echo $v[0].", ".$v[1]; });
create_function()
больше не должен использоваться.
OP
может использовать современную функцию обратного вызова ...
Warning: implode(): Invalid arguments passed in C:\xampp\htdocs\labs\getcertdetails2\get_cert16.php on line 737
эта строка$key_usage[] = implode(',', $val);