0
public function get_entity_keyNumber($entity)
    {
        $this->session = Session::instance();   
        (int)$lastNumber = 0;
        $user_data= array_keys($this->session->as_array());
        $user_experience = array_filter($user_data,function($value){return strstr($value, $entity);});
        if(!empty($user_experience))
        {
            $lastElement = end($user_experience);
            (int)$lastNumber = substr($lastElement,-1);
            $lastNumber++;
        }
        return $lastNumber;
    }

这个函数正在这样做,它返回我 $user_data 中最后一个键的最后一个字符,并通过将其转换为整数来递增它。

$user_data = array("experience0") 就像我使用这个函数一样:

 (int)$lastNumber = get_entity_keyNumber("experience");

它将返回 1,我将向会话中添加另一个数组,名称为 experience1,然后是 experience2,experence3,因此它不能覆盖会话中的键

当我使用此函数时为什么会抛出错误:调用未定义函数 get_entity_keyNumber() 或有时 $entity 变量未定义我是 php 和 kohana 的新手

使用内联时它工作得很好。

4

2 回答 2

0

尝试这个:

$instance->get_entity_keyNumber("experience");

$instance表示方法get_entity_keyNumber所属的类的实例。

在类定义字段中,它将是$this.

我很抱歉不知道kohana

于 2013-05-13T11:52:28.890 回答
0

我在具有相同名称的类中使用私有属性并为其分配了方法参数的值,并使用该类属性使用 $this 过滤数组值,我的 OOP 很弱:)

private $entity;
public function get_entity_keyNumber($entity)
{
    $this->$entity =$entity;
    $this->session = Session::instance();   
    (int)$lastNumber = 0;
    $user_data= array_keys($this->session->as_array());
    $user_experience = array_filter($user_data,function($value){return strstr($value, $this->entity);});
    if(!empty($user_experience))
    {
        $lastElement = end($user_experience);
        (int)$lastNumber = substr($lastElement,-1);
        $lastNumber++;
    }
    return $lastNumber;
}
于 2013-05-15T10:11:24.953 回答