Php 只能通过引用传递变量
我有一门课:Php 只能通过引用传递变量,php,class,Php,Class,我有一门课: class Validator { private $validationArray; private $cleanedValues; public function __construct($arg1, $arg2=NULL) { if(empty($arg2)) { $this->LoadValidatorByName($arg1); } else { $this-&
class Validator {
private $validationArray;
private $cleanedValues;
public function __construct($arg1, $arg2=NULL) {
if(empty($arg2)) {
$this->LoadValidatorByName($arg1);
} else {
$this->LoadValidatorFromLeadType($arg1, $arg2);
}
}
private function LoadValidatorFromLeadType($lead_type, $vocabulary) {
$ErrorReporter = new ErrorReporter;
$taxonomy_term = reset(taxonomy_get_term_by_name($lead_type, $vocabulary));
...some more stuff
函数分类法是Drupal函数,但我遇到的问题是PHP函数
当调用此方法时,PHP会抱怨:
Strict warning: Only variables should be passed by reference in Validator->LoadValidatorFromLeadType() (line 32 of [path to my file])
第32行与以下内容一致:
$taxonomy_term = reset(taxonomy_get_term_by_name($lead_type, $vocabulary));
我已经查看了这个错误,我很确定我知道它的意思,但是我不明白我的代码是什么错误导致了这个警告。这意味着只有变量应该通过引用传递,而不是表达式
reset($array_variable); // correct
及
如果你花点时间仔细考虑一下,你会发现带表达式(不是变量)的
reset()
毫无意义,因为你已经将数组指针倒回了开头,但是你再也无法访问该数组了。reset正在等待变量引用。您正在向其传递函数结果
$taxonomy_term = taxonomy_get_term_by_name($lead_type, $vocabulary);
$taxonomy_term = reset($taxonomy_term );
您应该只重置变量(通过引用传递),而不是函数的返回值。
请参阅:这就是为什么PHP自PHP5.4以来提供了对函数结果的数组访问:
分类法\u按名称($lead\u type,$词汇表)[0]
@Sven:如果您知道第一个元素的键就好了
$taxonomy_term = taxonomy_get_term_by_name($lead_type, $vocabulary);
$taxonomy_term = reset($taxonomy_term );