<?php
class Kamus {
	private $kamus = [];
	
	public function tambah(string $kata, array $sinonim) {
		// tidak mengembalikan hasil (void)
		
		if(!isset($this->kamus[$kata])) {
			$this->kamus[$kata] = [];
		}
		
		foreach($sinonim as $other_kata) {
			if(!in_array($other_kata, $this->kamus[$kata])) {
				$this->kamus[$kata][] = $other_kata;
			}
			
			if (!isset($this->kamus[$other_kata])) {
                $this->kamus[$other_kata] = [];
            }
            
            if (!in_array($kata, $this->kamus[$other_kata])) {
                $this->kamus[$other_kata][] = $kata;
            }
            
            // foreach($sinonim as $other_kata2) {
            // 	if ($other_kata == $other_kata2) continue;
            	
            // 	if (!in_array($other_kata2, $this->kamus[$other_kata])) {
            //         $this->kamus[$other_kata][] = $other_kata2;
            //     }
            // }
		}
		 
		return;
	}
	
	public function ambilSinonim(string $kata) {
		// mengembalikan hasil array of strings
		return $this->kamus[$kata];
	}
}

$kamus = new Kamus();
$kamus->tambah('big', ['large', 'great']);
$kamus->tambah('big', ['huge', 'fat']);
$kamus->tambah('huge', ['enormous', 'gigantic']);
function cetakSinonim($kamus, $kata) {
	echo "Sinonim dari '$kata': ";
	$hasil = $kamus->ambilSinonim($kata);
	if ($hasil === null) {
		echo "null\n";
	} else {
		echo "[" . implode(", ", $hasil) . "]\n";
	}
}

cetakSinonim($kamus, 'big');
cetakSinonim($kamus, 'huge');
cetakSinonim($kamus, 'gigantic');
cetakSinonim($kamus, 'colossal');
?>