當前位置: 首頁>>代碼示例>>PHP>>正文


PHP Term::getInstances方法代碼示例

本文整理匯總了PHP中Term::getInstances方法的典型用法代碼示例。如果您正苦於以下問題:PHP Term::getInstances方法的具體用法?PHP Term::getInstances怎麽用?PHP Term::getInstances使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在Term的用法示例。


在下文中一共展示了Term::getInstances方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: eval_term

 private function eval_term(Term $term)
 {
     $rel = $term->getName();
     $vars = $term->getVariables();
     // $vars: [Variable]
     // all variables have value, no need to generate/iterate candidates
     if ($term->readyForResolve()) {
         return $this->isTrue($rel, $term->getInstances());
     }
     /* ---------Have to fill the variables with a candidate value ----------- */
     try {
         if ($this->isRule($rel)) {
             $candidates = $this->instance_generator_for_rule($term);
         } else {
             $candidates = $this->instance_generator_for_fact($term);
         }
     } catch (Exception $e) {
         //echo "no candidates for: \n"; echo "  " . $term->toString() . "\n";
         return FALSE;
     }
     foreach ($candidates as $_instances) {
         //echo $term->toString() . "\n";
         //print_r($_instances);
         $term->assignValues($_instances);
         // if $term is fact, isTrue() will not assign value for
         // variables, it could make wrong variable value for next
         // term. for example:
         // hasDesc(A, C) :- hasChild(A, B) o hasDesc(A, C)
         // assign A = 'x', C = 'z'
         // hasDesc('x', 'z') :- hasChild('x', ?) o hasDesc(?, 'z')
         // assign ? = 'y'
         // hasDesc('x', 'z') :- hasChild('x', 'y') o hasDesc('y', 'z')
         // if we don't assigin value to ?
         // hasDesc(?, 'z') will be evaulated
         // the candicate of ? could be ['x', 'y', 'z'], then
         // hasDesc('x', 'z') cause infinite loop
         if ($this->isTrue($rel, $_instances)) {
             // recursive eval next, if return true, return true
             // if next term false, continue the iteration
             if (NULL == $term->next()) {
                 return TRUE;
             }
             // no more for eval
             if ($this->eval_term($term->next())) {
                 return TRUE;
             }
         }
     }
     return FALSE;
     // all candidate are false.
 }
開發者ID:318io,項目名稱:318-io,代碼行數:51,代碼來源:reasoner.php


注:本文中的Term::getInstances方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。