PHP数组充满了数据,但可以';t返回值

PHP数组充满了数据,但可以';t返回值,php,arrays,object,Php,Arrays,Object,我有一个数组$presettings 打印(预设);产出: 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]

我有一个数组$presettings 打印(预设);产出:

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,但也不起作用

错误在哪里?
谢谢。

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

$presettings[0]->machine_name;

请注意,这里有一个对象,而不是数组。不要尝试使用作用域访问值。

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

试试看:

$presettings[0]->machine_name

在数组中,索引
0
处有
stdClass对象。您希望访问对象的变量,这与数组的语法略有不同:

echo $presettings[0]->machine_name;

$presettings[0]->machine\u name OMG运行正常,谢谢,但这是为什么?下面的两个答案中有一个解释。因为get\u rows返回一个对象数组,所以[0]将返回第一个对象->machine\u name,同样是因为它是一个对象,而不是一个单一的[key]=值数组对于初学者来说是一个类错误,没什么大不了的。:)