传递数组()而不是对象给出:尝试获取非对象的属性

Ale*_*ber 0 php arrays object

使用PHP 5.3.3和Drupal 7.17我创建了一个简短的自定义PHP脚本,其中我想调用Drupal的函数 - 这反过来期望一个对象具有一个pass属性:

function user_check_password($password, $account) {
  if (substr($account->pass, 0, 2) == 'U$') {
    $stored_hash = substr($account->pass, 1);
    $password = md5($password);
  }
  .....
}
Run Code Online (Sandbox Code Playgroud)

所以在我的脚本中,我尝试"动态"创建这样一个对象:

<?php

require_once('/path/to/drupal/includes/password.inc');
........
$sth = $db->prepare(SQL);
$sth->execute(array($username));
if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        if (user_check_password($password, array('pass' => $row['pass']))) {
                header('Content-Type: application/json; charset=utf-8');
                print json_encode($row);
        }
}
Run Code Online (Sandbox Code Playgroud)

但是这给了我一个错误: Trying to get property of non-object

这可能意味着:PHP不接受我的数组,它想要一个对象.

我如何"动态"创建一个匿名对象然后让它开心?

Ale*_*s G 5

你收到一个错误,因为Array不是Object.如果您不想手动创建对象(如@adityamenon的答案),那么您可以简单地将数组转换为对象:

user_check_password($password, (object)array('pass' => $row['pass']))
Run Code Online (Sandbox Code Playgroud)