<?php function createTree($array){ $tree = []; foreach($array as $v){ $v = str_split($v); $tmp = &$tree; while($c = array_shift($v)) $tmp = &$tmp[strtolower($c)]; unset($tmp); } return $tree; } function findNode($value, $treeTmp){ foreach($value as $k){ if(!array_key_exists(strtolower($k), $treeTmp)) return FALSE; else $treeTmp = $treeTmp[$k]; } return TRUE; } /* ------------ */ $data = ["round", "roundish", "word"]; $searchValue = "round"; //Normal lookU **very slow** $result = in_array($searchValue, $data); var_dump($result); //Faster lookUp $tree = createTree($data); print_r($tree); $result = findNode(str_split($searchValue), $tree); var_dump($result); //PROBLEM -> It also finds values which don't exist in '$data' $searchValue = "ro"; //I DO NOT EXIST IN $data $result = findNode(str_split($searchValue), $tree); var_dump($result); ?>
You have javascript disabled. You will not be able to edit any code.