これらの関数をモデルに記述しました (CodeIgniter を使用しています)。
function getLocalIngrdname()
{
$this->load->database();
$query = $this->db->get('onl_local_ingrd');
foreach($query->result() as $row)
$allingrd[]=$row->ingrd_localname;
return $allingrd;
}
function getCloseIngrdname($ingrdname,$localname)
{
$this->load->database();
$query = $this->db->get('onl_ingrd');
foreach($query->result() as $row)
$allingrd[]=$row->ingrd_name;
foreach($localname as $row)
$allingrd[]=$row;
$shortest=-1;
foreach ($allingrd as $ingrd) {
$lev = levenshtein($ingrdname, $ingrd);
if ($lev <= $shortest || $shortest < 0) {
$closeword = $ingrd;
$shortest = $lev;
}
}
return $closeword;
}
この関数はコントローラにあります
関数 getResult() { $this->load->model('searchRecipe_model'); $ingrdname = $this->input->post('ingrdname'); $output[]=2; $localnames[]=$this->searchRecipe_model->getLocalIngrdname(); $output[]=$this->searchRecipe_model->getCloseIngrdname($ingrdname,$localnames); echo json_encode($localnames); }
$allingrd
成分名の配列です。$closeword
in javascript アラート メッセージを表示します。私が与えると、$lev=levenshtein($ingrdname,$allingrd[0])
それは完全に機能します。ただし、ループ内では機能しません。理由についてのアイデアはありますか?前もって感謝します。