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 );