PHP数组填充了数据,但无法返回值

时间:2014-04-01 22:38:13

标签: php arrays object

我有一个数组$ presettings 的print_r($预设置);输出:

Array (
  [0] => stdClass Object (
    [uuid] => xxx-1ef8-aac6-xxx-xxx
    [name] => etime
    [owner] => eder112T Resident
    [online] => 1
    [channel] => 63b525ae-xxx-3555-1c74-xxx
    [owner_uuid] => a371751c-eb77-xxx-899c-xxx
    [simname] => Plainfield
    [slurl] => xxx://xxx/xx/xx/243/24/xx/?title=xx
    [design] => 2
    [msg_oftheday] => two
    [machine_name] => one
    [autopay] =>
    [autolog_leave] => 
    [autolog_offline] => 
    [allow_activation] =>
  )
)

现在我想获得一个特殊的密钥:

echo "test output : "$presettings['machine_name']." testend";
outputs "" (nothing).

我的方法看起来像这样

function preloadSettingsFromMYSQL($ownername,$prim_uuid)
{
    $result = $this->instance->get_rows("SELECT * FROM etime_rims where owner='".$ownername."' AND uuid='".$prim_uuid."'");
    return $result;
}

$ result是一个对象数组,也尝试使用$ presettings-> machine_name,也没用。

错误在哪里? 谢谢。

3 个答案:

答案 0 :(得分:0)

你的对象是多维的,所以只需添加一个级别

$presettings[0]->machine_name;

另外请注意,此处有一个对象,而不是数组,请不要尝试使用范围访问对象。

答案 1 :(得分:0)

如果仔细查看print_r结果,可以看到那里有0,这意味着这些值不是直接在$presettings中,而是实际上在$presettings的第一个元素中。

试试吧:

$presettings[0]->machine_name

答案 2 :(得分:0)

在您的数组中,您在索引stdClass Object处有0。您正在寻找访问对象的变量,这是一种与数组略有不同的语法:

echo $presettings[0]->machine_name;