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、experince3 という名前のセッションに追加して、セッション内のキーを上書きできないようにします

この関数を使用しているときに、なぜこのエラーがスローされるのですか: 未定義関数 get_entity_keyNumber() への呼び出し、または場合によっては $entity 変数未定義 Iam は php だけでなく kohana も初めてです

インラインを使用すると、完全に機能します。

4

2 に答える 2

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 に答える
0

これを試して:

$instance->get_entity_keyNumber("experience");

$instanceget_entity_keyNumberメソッドが属するクラスのインスタンスを意味します。

クラス定義フィールドでは、 になります$this

コハナを知らなくてごめんなさい。

于 2013-05-13T11:52:28.890 に答える