вывести все значения в массиве из цикла в цикле

1

У меня есть массив, созданный из цикла, который возвращает правильные данные

$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].', ';  
Теги:
arrays

2 ответа

1
Лучший ответ

Вам не нужно хранить значение в другом массиве, так как ваше значение представляет собой массив.

После обсуждения в чате:

 $new_ku = implode(',',$ku); 
 echo $new_ku;   
  • 0
    я получаю эту ошибку Warning: implode(): Invalid arguments passed in C:\xampp\htdocs\labs\getcertdetails2\get_cert16.php on line 737 эта строка $key_usage[] = implode(',', $val);
  • 0
    Кроме того, мне нужно решение, которое использует echo вместо print_r, поскольку я буду использовать его как часть HTML-кода
Показать ещё 8 комментариев
0

попробуйте этот код,

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]; });
  • 0
    create_function() больше не должен использоваться.
  • 0
    @ Ja͢ck, это проблема безопасности, но поддерживается в старых версиях PHP, OP может использовать современную функцию обратного вызова ...
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню