PHP数组充满了数据,但可以';t返回值
我有一个数组$presettings 打印(预设);产出: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]
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]=值数组对于初学者来说是一个类错误,没什么大不了的。:)