nie wiem dlaczego zwracana jest tablica
bo zmienną, którą używasz do zwrócenia wyniku z funkcji
return $countFriend;
masz zadeklarowaną jako tablicę
$countFriend = [];
domyślam się, że Twój sql "zwraca" jeden wiersz danych
SELECT count(*) as count_friend
FROM `friend`
WHERE (request_from_id = :id OR request_to_id = :id) and status = 'znajomy';
więc "pobierz" dane bez używania pętli while i tablicy
np. coś takiego
public function countFriend(int $sessionId): int
{
$query = $this->pdo->prepare("SELECT count(*) as count_friend FROM `friend` WHERE (request_from_id = :id OR request_to_id = :id) and status = 'znajomy';");
$query->bindParam(':id', $sessionId, PDO::PARAM_INT);
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC);
$countFriend = $row['count_friend'] ?? 0;
return $countFriend;
}
[ PDOStatement::fetch ] [ Double Question Mark ?? in PHP ]
P.S.
public function countFriend(int $sessionId): int
{
$query = $this->pdo->prepare("SELECT count(*) as count_friend FROM `friend` WHERE (request_from_id = :id OR request_to_id = :id) and status = 'znajomy';");
$query->bindParam(':id', $sessionId, PDO::PARAM_INT);
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC);
return $row['count_friend'] ?? 0;
}