foreach только проходит через первый уровень любого данного массива. То, что вы представили, фактически является массивами, вложенными в другие массивы. Учитывая массив в вашем примере, $ key никогда не будет равен "id". Если массив всегда будет структурирован точно так, как задано, вы должны получить доступ к «id» следующим образом:
foreach($userfriends as $key=>$value) {
$friend_id = $value['id'];
}
РЕДАКТИРОВАТЬ на самом деле, это немного сложнее, чем это ... Я просто заметил, что массив еще более вложен, чем я думал, что означает, что вы должны иметь зацикливание для каждого уровня вложенности. Если я вижу весь массив, он может начаться так:
foreach($userfriends['data'] as $key=>$value {
при условии, что все, что нас интересует, находится в ассоциативном массиве "data" ...
Если вы не знаете, насколько глубоко будет вложенный массив, и вам действительно нужно извлечь только поле «id», где бы оно ни находилось, самый простой способ обработать его - это рекурсивная функция с замкнутым циклом. Но это совсем другая тема ...