代码之家  ›  专栏  ›  技术社区  ›  arma Mandip Darji

如何检索对象数组值?

  •  2
  • arma Mandip Darji  · 技术社区  · 14 年前

    因此,我运行对用户类和find_by_sql方法的请求:

    $getAct = User::find_by_sql($sql);
    

    我得到的答复是:

    Array
    (
        [0] => User Object
            (
                [id] => 6
                [permissions] => 0
                [email] => email@example.com
                [password] => 918f358a5cdf01e63d4609063d9A2bfec57f8455
                [first_name] => Name
                [last_name] => Surname
                [city] => City
                [gender] => m
                [birth_date] => 1980-02-02
                [act_code] => AAAAAAAAAAAAAAA
            )
    
    )
    

    如果我使用非静态方法,那就很容易了,因为我只需要调用$obj->act_代码。 但是如何从静态方法调用中执行相同的操作呢?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Community CDub    7 年前

    你必须这么做

    $getAct  = User::find_by_sql($sql);
    $actCode = $getAct[0]->act_code;
    

    或更详细

    $getAct  = User::find_by_sql($sql); // returns an array
    $user    = $getAct[0];              // assign first element in array to $user
    $actCode = $user->act_code;         // read act_code member from User Object
    

    从你的结果可以看出, $getAct [0] because Arrays are indexed with zero-based keys ). 元素是用户 Object .

    access/mutate/call Object members/methods T_OBJECT_OPERATOR ( -> ). 自从 $getAct[0] 将返回对象的句柄,然后可以通过 ->get_act .

        2
  •  0
  •   joschi    14 年前

    为第一个数组元素的成员变量赋值 act_code 对于变量:

    $act_code = $getAct[0]->act_code;
    
        3
  •  0
  •   alfonsojimenez    14 年前

    我不知道你用的是什么ORM,但是如果你只想检索一条记录,就把它限制在1。它应该返回一个用户对象而不是一个用户对象数组

    $user = User::find_first_by_sql($sql);
    $act  = $user->act_code;`