<?php
Class Thesaurus {
public function add($word, $synonyms)
{
$data = [];
{
//for($i=0;$i<count($synonyms);$i++){
foreach ($synonyms as $synonym) {
$this->datas[$word][]=$synonym;
}
}
else
{
$this->datas[$word]=$synonyms;
}
return $this->datas;
}
public function getSynonyms($word){
//if key = word
foreach ($this->datas[$word] as $data) {
$result[$i] = $data;
}
}
//key as synonym
foreach ($this->datas as $key => $value) {
$array_key = $this->datas[$key];
$result[] = $key;
}
}
if ($result == null) {
return null;
}
return $result;
}
}
$thesaurus = new Thesaurus;
$thesaurus->add('big', ['large', 'great']);
$thesaurus->add('big', ['huge', 'fat']);
$thesaurus->add('huge', ['enormous', 'gigantic']);
// returns ['large', 'great', 'huge', 'fat']
var_dump($thesaurus->getSynonyms('big'));
// returns ['big', 'enormous', 'gigantic']
var_dump($thesaurus->getSynonyms('huge'));
// returns ['huge']
var_dump($thesaurus->getSynonyms('gigantic'));
// returns null
var_dump($thesaurus->getSynonyms('colossal'));
PD9waHAKQ2xhc3MgVGhlc2F1cnVzIHsKCXByaXZhdGUgICRkYXRhcz0gYXJyYXkoKTsKCXB1YmxpYyBmdW5jdGlvbiBhZGQoJHdvcmQsICRzeW5vbnltcykgCgl7CgkJJGRhdGEgPSBbXTsKCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJHdvcmQsJHRoaXMtPmRhdGFzKSkKCQkJewoJCQkJLy9mb3IoJGk9MDskaTxjb3VudCgkc3lub255bXMpOyRpKyspewoJCQkJZm9yZWFjaCAoJHN5bm9ueW1zIGFzICRzeW5vbnltKSB7CgkJCQkkdGhpcy0+ZGF0YXNbJHdvcmRdW109JHN5bm9ueW07CgkJCQl9CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhpcy0+ZGF0YXNbJHdvcmRdPSRzeW5vbnltczsKCQkJfQoJCXJldHVybiAkdGhpcy0+ZGF0YXM7Cgl9CglwdWJsaWMgZnVuY3Rpb24gZ2V0U3lub255bXMoJHdvcmQpewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCWlmIChhcnJheV9rZXlfZXhpc3RzKCR3b3JkLCAkdGhpcy0+ZGF0YXMpKSB7CgkJICAgIC8vaWYga2V5ID0gd29yZAoJCQlmb3JlYWNoICgkdGhpcy0+ZGF0YXNbJHdvcmRdIGFzICRkYXRhKSB7CgkJCQkJJGkgPSBjb3VudCgkcmVzdWx0KTsKCQkJCQkkcmVzdWx0WyRpXSA9ICRkYXRhOwoJCQkJfQoJCQl9CgkJCS8va2V5IGFzIHN5bm9ueW0KCQkJZm9yZWFjaCAoJHRoaXMtPmRhdGFzIGFzICRrZXkgPT4gJHZhbHVlKSB7CgkJCQkkYXJyYXlfa2V5ID0gJHRoaXMtPmRhdGFzWyRrZXldOwoJCQkJaWYgKGFycmF5X3NlYXJjaCgkd29yZCwgJGFycmF5X2tleSkgIT09IGZhbHNlKSB7CgkJCQkJCSRyZXN1bHRbXSA9ICRrZXk7CgkJCQl9CgkJfQoJCWlmICgkcmVzdWx0ID09IG51bGwpIHsKCQkJcmV0dXJuIG51bGw7CgkJfQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CiR0aGVzYXVydXMgID0gbmV3IFRoZXNhdXJ1czsKJHRoZXNhdXJ1cy0+YWRkKCdiaWcnLCBbJ2xhcmdlJywgJ2dyZWF0J10pOwokdGhlc2F1cnVzLT5hZGQoJ2JpZycsIFsnaHVnZScsICdmYXQnXSk7CiR0aGVzYXVydXMtPmFkZCgnaHVnZScsIFsnZW5vcm1vdXMnLCAnZ2lnYW50aWMnXSk7CgovLyByZXR1cm5zIFsnbGFyZ2UnLCAnZ3JlYXQnLCAnaHVnZScsICdmYXQnXQp2YXJfZHVtcCgkdGhlc2F1cnVzLT5nZXRTeW5vbnltcygnYmlnJykpOwoKLy8gcmV0dXJucyBbJ2JpZycsICdlbm9ybW91cycsICdnaWdhbnRpYyddCnZhcl9kdW1wKCR0aGVzYXVydXMtPmdldFN5bm9ueW1zKCdodWdlJykpOwoKLy8gcmV0dXJucyBbJ2h1Z2UnXQp2YXJfZHVtcCgkdGhlc2F1cnVzLT5nZXRTeW5vbnltcygnZ2lnYW50aWMnKSk7CgovLyByZXR1cm5zIG51bGwKdmFyX2R1bXAoJHRoZXNhdXJ1cy0+Z2V0U3lub255bXMoJ2NvbG9zc2FsJykpOwoK