调用静态属性时遇到问题:
const LOW = 'somethg';
当我尝试这样时,没关系:
$arrv = FuzzyClass::$terms[$pk][FuzzyQuery::LOW];
但我需要使用变量名称,它不起作用:
$pv = 'LOW';
$arrv = FuzzyClass::$terms[$pk][FuzzyQuery::$pv];
答案 0 :(得分:1)
试试这个:
$arrv = FuzzyClass::$terms[$pk][constant(FuzzyQuery::$pv)];
FuzzyQuery::$pv
只是一个包含LOW
的字符串,因此以这种方式调用将low
作为字符串返回。使用常量标识符。
答案 1 :(得分:0)
尝试使用ReflectionClass:
class FuzzyQuery {
const LOW = 'somethg';
}
class FuzzyClass {
public static $terms = ['index' => ['somethg' => 'Hello']];
}
$pk = 'index';
$pv = 'LOW';
$reflection = new ReflectionClass('FuzzyQuery');
$arrv = FuzzyClass::$terms[$pk][$reflection->getConstant($pv)];
echo $arrv . PHP_EOL; // Hello